jquery if语句不能正常工作

时间:2013-02-14 10:41:22

标签: jquery html if-statement

我有问题。我已经创建了一些代码,逻辑上它应该可以正常工作,但是每次我启动它都没有做它应该做的事情。我将在下面发布代码和jsFiddle,但主要问题是当div的值设置为Gold时禁用第二个选择框

jquery的:

$('select[name="Package Options"]').change(function() {
  $('#result').html($(this).find(":selected").val());
  var result = $('#result').val();
  if(result == 'Gold') {
      $('select[name="Bolt On Options"]').attr('disabled', 'disabled');
  }
});

jsFiddle - http://jsfiddle.net/andyjh07/xHrHA/

谢谢你们

5 个答案:

答案 0 :(得分:1)

您应该使用html()方法检索元素#result的内容。 val()主要用于检索表单元素的值。

$('select[name="Package Options"]').change(function() {
  $('#result').html($(this).find(":selected").val());
  var result = $('#result').html();  //Notice .html() instead of val()
  if(result == 'Gold') {
      $('select[name="Bolt On Options"]').attr('disabled', 'disabled');
  }
});

工作示例:http://jsfiddle.net/xHrHA/2/

正如评论中所指出的,这可以简化为:

$('select[name="Package Options"]').change(function() {
  $('#result').html($(this).find(":selected").val());   
  if($(this).val() == 'Gold') {
      $('select[name="Bolt On Options"]').attr('disabled', 'disabled');
  }
});

工作示例:http://jsfiddle.net/xHrHA/3/

答案 1 :(得分:1)

您的代码太复杂了 - 不需要.find :selected值 - 它已在事件处理程序中以this.value形式提供。

您还需要能够在选择其他值时重新启用控件,因此:

$('select[name="Package Options"]').change(function () {
    var result = this.value;
    $('#result').html(result);
    $('select[name="Bolt On Options"]').prop('disabled', result === 'Gold');
});

注意:您应该使用.prop来更改现有控件的属性,而不是.attr。后者只应该反映HTML源代码中存在的属性,尽管jQuery确实存在disabled属性的hack以确保它在这些情况下工作。另一个优点(如此处所示)是提供的值是布尔值,进一步简化了代码。

我还建议用简单的ID替换你的select[name="..."]选择器(当然必须在元素上也存在)。这将使您的代码更具可读性,提供如下所示的最终解决方案,这不仅比原始代码短得多,而且效率更高处理“重置”回到“启用“选择其他选项时:

$('#package').change(function () {
    var result = this.value;
    $('#result').html(result);
    $('#bolton').prop('disabled', result === 'Gold');
});

请参阅http://jsfiddle.net/alnitak/gBMQ9/

答案 2 :(得分:0)

试试这个

JS CODE

$('select[name="Package Options"]').change(function() {
  $('#result').html($(this).find(":selected").val());
  var result = $('#result').text();//use `text()` or `html()` instead of val()
  if(result == 'Gold') {
      $('select[name="Bolt On Options"]').attr('disabled', 'disabled');
  }
});

LIVE DEMO

答案 3 :(得分:0)

div没有value属性,因此无法使用val()。您将需要使用.text()或.html()代替。

答案 4 :(得分:-2)

尝试使用

var result = $ .trim('#result')。val();