2014-01-06 78 views
0

我試圖理解爲什麼當我在單選按鈕上使用.prop()時,if語句總是返回false。我的目標是隻有在選擇了「#manualOverrideNo」單選按鈕的情況下才能運行JS。如果有人能夠啓發我,我會非常感激。下面是一個代碼片段的小提琴 - http://jsfiddle.net/gv0029/xEfw4/1/ - 這裏還有:.prop if語句與JQuery

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()); 
      }); 
} 

謝謝!你們都是我的英雄!

+0

一些提示:'parseFloat'不採用基數。 '.toString'是不需要的,因爲'val()'無論如何都會這樣做。如果你使用jQuery的新版本'綁定',使用'on'。 – elclanrs

+1

你的jsfiddle中的代碼似乎工作得很好。你能更清楚地解釋發生了什麼問題嗎? – Pointy

+0

您在jsfiddle中使用attr –

回答

1

我已經改變了小提琴,它現在應該工作

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/有屬性和屬性之間的差異的信息。

+0

OOOOOOhh。好吧,這很有意義。謝謝! – mario