2

我正在使用 mvc4

我有 2 个下拉列表,一个是minimum experience,另一个是maximum experience,我试图从客户端验证最小值和最大值,反之亦然,但没有以我想要的方式工作。我想要实现的事情就像..

1 . 最小值应始终小于最大值。

2 . 如果最小值和最大值都是,0那么它应该继续。

3 . 两者都可以允许空白(不想给出最小值或最大值),我的意思是用户也可以选择默认值,就像---minimum------maximum---.

4 . 如果没有选择最小值,只选择了最大值,那么它应该继续。同样的情况也最少。

到目前为止,我有这个:

创建FIDDLE来说明想法。

jQuery

_ **_已编辑** _ __ _ __ _ __ _ __ _

达到了如此接近,达到这一点,现在只剩下一件事,maximum被检查为一个值并进行比较,但我想通过条件忽略它。

$("#MinExperienceDropDown").change(function () {
     if ((($(this).val()) != "" && ($("#MaxExperienceDropDown").val() != "")) && ($("#MaxExperienceDropDown").val() != "") && ($(this).val() > $("#MaxExperienceDropDown").val())) {
                 alert('Minimum expreience should be less than maximum');
            }
        });
 $("#MaxExperienceDropDown").change(function () {
           if ($(this).val() < $("#MinExperienceDropDown").val()) {
              alert('Maximum expreience should be greater than minimum');
           }
  });

HTML

<div style="text-align: left">
   <select name="MinExperience" id="MinExperienceDropDown" style="width: 32%" class="select">
      <option value="">--Minimum--</option>
      <option value="0">0</option>
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
      <option value="5">5</option>
   </select>
   <select name="MaxExperience" id="MaxExperienceDropDown" style="width: 32%; float: right;margin-right: 82px" class="select">
      <option value="">--Maximum--</option>
      <option value="0">0</option>
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
      <option value="5">5</option>
   </select>
</div>

任何帮助是极大的赞赏。

提前谢谢大家。

4

2 回答 2

3

这更接近你想要的吗?如果没有,我希望从这一点开始编辑至少应该更容易。

JS

//Cache these as variables so we only have to select once
var $min= $("#MinExperienceDropDown");
var $max = $("#MaxExperienceDropDown");
var $msg = $("#message");

//Apply a single change event to fire on either dropdown
$min.add($max).change(function () {
    //Have some default text to display, an empty string
    var text = "";
        
    //Cache the vales as variables so we don't have to keep getting them
    //We will parse the numbers out of the string values
    var minVal = parseInt($min.val(),10);
    var maxVal = parseInt($max.val(),10)
    
    //Determine if both are numbers, if so then they both have values
    var bothHaveValues = !isNaN(minVal) && !isNaN(maxVal);
    
    if(bothHaveValues){
        if(minVal > maxVal){
            text += 'Minimum expreience should be less than maximum';
        }else if(maxVal < minVal){
            text += 'Maximum expreience should be greater than minimum';
        }
    }
    
    //Display the text
    $msg.html(text);
});

HTML

<label for="MaxExperienceDropDown">Min Experience</label>
<select name="MinExperience" id="MinExperienceDropDown">
    <option value=""></option>
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>

<br>
<br>
    
<label for="MaxExperienceDropDown">Max Experience</label>
<select name="MaxExperience" id="MaxExperienceDropDown">
    <option value=""></option>
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>

<div id="message"></div>

演示:http: //jsfiddle.net/pLkX6/3/

于 2013-06-01T07:30:51.163 回答
1

编写一个javascript方法

function validation(){
if($("#MaxExperienceDropDown").val() != "" && $("#MinExperienceDropDown").val() != "" &&  (($("#MaxExperienceDropDown").val() != 0 && $("#MinExperienceDropDown").val() != 0) || ($("#MaxExperienceDropDown").val() < $("#MinExperienceDropDown").val()))){
 //your alert message here
}
}

从下拉列表的 onChange 事件调用此方法,如下所示

$("#MinExperienceDropDown").change(function () {
    validation()
        });
 $("#MaxExperienceDropDown").change(function () {
          validation()
  });
于 2013-06-01T07:06:34.650 回答