检查是否已选择除默认值以外的选择

时间:2016-05-10 13:34:31

标签: jquery

我有一个包含30个值的选择框,其中一个默认为“已选中”。我需要做的是,如果选择了“选定”值,则将变量更改为true。

     $('.secondNext').click(function(){
      var vali_field = $(".udf-selection option:selected").val(),
      id = $('.hiddenRuleID').val(),
      tranType = [],         
      ruleStep = 'step2',
      tranTypeSel = false,
      validFieldSel = false;

      $('.checkboxGroup input[type="checkbox"]').each(function() {
          if ($(this).is(":checked")) {
              tranTypeSel = true;

          }
      });
        if (tranTypeSel == false) {
          $('.secondNext').removeClass('next');
          $('.tranTypeError').show();
          $('.tranTypeError').text('* Please select a transaction type');              
          alert('Please select at least one checkbox');
          return false;            
        }
        if (valiFieldSel == false) {
          $('.secondNext').removeClass('next');
          $('.udfError').show();
          $('.udfError').text('* Please select a UDF');   
          alert('Please select at least one udf'); 
          return false;            
        }            

      $('input[name=tranType]:checked').each(function() {
          tranType.push($(this).val());
      }); 

      $.ajax({
          url: 'ajax/updateNewRule.php',
          type: 'POST',
          data: {
            id: id,
            vali_field: vali_field,
            tranType: tranType,
            ruleStep: ruleStep
          }
      })
      .done(function(data) {

      })
    })   

我已经尝试了上述内容,但它认为选择了某些内容,因为其中一个值具有所选属性。

更新

这是小提琴中的场景 - http://jsfiddle.net/csLAk/8337/

3 个答案:

答案 0 :(得分:1)

在加载时保存所选值,而不是在更改时检查值是否不同:

$(document).ready(function() {
  $('select').each(function() {
    $(this).data('selected', $('option:selected', this).val());
  });

  $('select').change(function() {
    if ($(this).val() != $(this).data('selected')) {
      $(this).parent().css({
        'border-color': 'green'
      });
    } else {
      $(this).parent().css({
        'border-color': 'red'
      });
    }
  })
})
div {
  float: left;
  border: 2px solid transparent;
}
select {
  width: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <select>
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
    <option value="d">d</option>
    <option value="e">e</option>
    <option value="f" selected="selected">f</option>
    <option value="g">g</option>
    <option value="h">h</option>
    <option value="i">i</option>
    <option value="j">j</option>
    <option value="k">k</option>
  </select>
</div>

答案 1 :(得分:1)

如果我正确理解了这个问题,您可以通过单选按钮或在页面加载时选择的类似方式选择一个值,并且如果选择了默认值以外的其他值,则需要处理该值。如果是这样,你可能会做这样的事情(我现在无法测试)

尝试改变:

if ($(this).is(":checked"))

if ($(this).is(":checked") && $(this).val() != `enter default value here`)

那应该检查逻辑在默认值上返回false。

答案 2 :(得分:-1)

你可以做这样的事情

var someVariable = false;
$('select').on('change', function() {
  someVariable = true;
});