2010-08-13 82 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查看您的变量/代码。