2010-08-13 86 views
-1

我有一個問題wirh我的jquery code.My代碼工作良好,除了在IF條件警報部分。jquery代碼不工作(警報)

$('#datepicker').datepicker({ onSelect: function(dateStr) { 
     var url = 'GetExchangeRate'; 
     var sellingRateValue; 
     var buyingRateValue; 
     $('#Duedate').val(dateStr); 
     $.post(url, { dateToGet: dateStr }, 
    function(data) { 

     var dr = $('#Dollar').val; 
     var br = $('#BuyingRate').val; 
     var sr = $('#SellingRate').val; 
     if ((dr == null || dr.length < 1) && (br == null || br.length < 1) && (sr == null || sr.length < 1)) { 
      alert("Please enter the exchage for today."); 
      $('#Dollar').val(''); 
      $('#BuyingRate').val(''); 
      $('#SellingRate').val(''); 
      return false; 
     } 
     else { 
      $('#Dollar').val(data.DollarRate); 
      $('#BuyingRate').val(data.SellingRate); 
      $('#SellingRate').val(data.BuyingRate); 

      //alert(data.CurrentDate); 


     } 
    }, 'json'); 
    } 
    }); 

這是代碼不工作的部分。

if ((dr == null || dr.length < 1) && (br == null || br.length < 1) && (sr == null || sr.length < 1)) { 
      alert("Please enter the exchage for today."); 
      $('#Dollar').val(''); 
      $('#BuyingRate').val(''); 
      $('#SellingRate').val(''); 
      return false; 
+2

當你說它在IF警報部分不能很好地工作時,你是什麼意思? ELSE部分是否始終運行? – 2010-08-13 05:29:54

+0

它扔任何javascript錯誤? – 2010-08-13 06:16:36

+0

你是什麼意思,不工作?它怎麼不工作?是否給出錯誤信息?你期望它做什麼? – 2010-08-13 06:16:48

回答

4

嘗試:

function(data) { 

     var dr = $('#Dollar').val(); 
     var br = $('#BuyingRate').val(); 
     var sr = $('#SellingRate').val(); 

用()結尾。

+1

+1爲好趕 – PHP 2010-08-13 05:21:04

+0

án:我不是什麼問題.....你的建議代碼不起作用.. – MikMark 2010-08-13 05:21:55

+0

讓我們繼續看! (無論如何都使用括號) – 2010-08-13 05:32:34

1

雖然我不完全確定你想要做什麼,但邏輯可能有點偏離。您應該首先應用Sebastian的修補程序,並可能重新考慮if語句的條件。

if ( (dr == null || dr.length < 1) 
     && (br == null || br.length < 1) 
     && (sr == null || sr.length < 1)) { 

    alert("Please enter the exchage for today."); 
    $('#Dollar').val(''); 
    $('#BuyingRate').val(''); 
    $('#SellingRate').val(''); 
    return false; 
} 

if的邏輯意味着只有在所有字段爲空的情況下才重置這些字段,這對我來說似乎沒有意義。我猜你想說的是,「只要其中任何一個都是空的,就重置所有這些字段。」

if ( (dr == null || dr.length < 1) 
     || (br == null || br.length < 1) 
     || (sr == null || sr.length < 1)) { 

旁註:

我想你應該改變你的條件,

if (!dr && !br && !sr) {...} // your original code 

if (!dr || !br || !sr) {...} // With my fix 
+0

我同意。 @ Mik-Mark,條件內部的行將重置三個輸入元素的內容,這些元素在您的示例中只是空的。 – 2010-08-13 06:12:53

+0

@Sebastian - 如果這些元素沒有'value'屬性,我想它會添加空的'value'屬性......但是這些代碼本身不應該導致if不觸發。 – 2010-08-13 06:38:31

+0

@Peter Ajtai,OP表示IF的alert()部分沒有觸發。這也許意味着如果從未如此。 – 2010-08-13 07:26:26

1

首先,像塞巴斯蒂安寫道,你應該使用val()括號。

其次,嘗試這一權利的if,而不是你現在有什麼之前:

 var dr = ""; 
    var br = ""; 
    var sr = ""; 

如果警報現在彈出,那麼你知道它之前沒彈出,因爲不是三的所有drbrsr被設置爲空字符串或null。 (全部三個必須是「」或nullif才能觸發)。

如果警報仍然不會彈出,那麼您在if聲明之外還有其他一些問題。

請確保您使用Firebug查看您的變量/代碼。