Я пытаюсь понять, почему, когда я использую.prop() на радиокнопке для оператора if, он всегда возвращает false. Моя цель - запустить JS только при выборе переключателя "#manualOverrideNo". Если бы кто-нибудь мог просветить меня, я был бы очень благодарен. Вот сценарий фрагмента кода - http://jsfiddle.net/gv0029/xEfw4/1/ - и здесь:
HTML: ручное управление:
<label>No<input type="radio" name="manualOverride"
id="manualOverrideNo" value="no" checked /></label>
<label>Yes<input type="radio" name="manualOverride"
id="manualOverrideYes" value="yes" /></label>
<label>Footage:<input type="number" id="footage"
name="footage" value="" /></label>
<label>Post Quantity:<input type="postQuantity"
name="postQuantity" id="postQuantity" value="" /></label>
JS:
if($('#manualOverrideNo').prop('checked')) {
//Code For Auto-complete
//Quantity for Posts
$('#footage').bind('keypress keydown keyup change', function(){
var footage = parseFloat($(':input[name="footage"]').val(),10);
var total = '';
if(!isNaN(footage)){
total = Math.ceil(footage /7);
}
$(':input[name="postQuantity"]').val(total.toString());
});
}
Еще раз спасибо! Я - мой герой!
Я изменил скрипку, и теперь она должна работать
вам нужно было иметь.prop вместо.attr в скрипке, также вам нужно проверить значение после того, как это произошло, а не при загрузке страницы.
//Code For Auto-complete
//Quantity for Posts
$('#footage').bind('keypress keydown keyup change', function()
{
if($('#manualOverrideNo').prop('checked'))
{
var footage = parseFloat($(':input[name="footage"]').val(),10);
var total = '';
if(!isNaN(footage))
{
total = Math.ceil(footage /7);
}
$(':input[name="postQuantity"]').val(total.toString());
}
});
http://api.jquery.com/prop/ содержит информацию о различиях между атрибутами и свойствами.
parseFloat
принимаетparseFloat
..toString
не нужен, так какval()
все равно сделает это. Если вы на новую версию JQuery канавыbind
, использоватьon
.