我有一个包含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/
答案 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;
});