我试图理解为什么当我在单选按钮上使用 .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());
});
}
再次感谢!你们都是我的英雄!
我已经改变了小提琴,它现在应该可以工作了
http://jsfiddle.net/xEfw4/5/
您需要在小提琴中使用 .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/包含有关属性和属性之间区别的信息。