【问题标题】:Validate experience dropdown with jQuery with minimum and maximum values使用带有最小值和最大值的 jQuery 验证体验下拉列表
【发布时间】:2013-05-27 23:52:41
【问题描述】:

我正在使用 mvc4

我有 2 个下拉列表,一个是 minimum experience,另一个是 maximum experience,我正在尝试从客户端验证最小值和最大值,反之亦然,但没有以我想要的方式工作。我想要达到的目标......

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

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

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

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

到目前为止,我有这个:

创建FIDDLE 来说明想法。

jQuery

_ **_EDITED** _____________

距离如此之近,快到这里,现在只剩下一件事,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>

非常感谢任何帮助。

谢谢大家提前。

【问题讨论】:

  • 我假设您正在寻找客户端验证?这个问题应该让您开始在服务器端:stackoverflow.com/q/13764684/534109 - 简而言之,目前 MVC 中没有任何内容可以让您进行不显眼的验证。
  • 我编辑了我的问题,非常接近目标。

标签: jquery html validation asp.net-mvc-4 drop-down-menu


【解决方案1】:

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

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/

【讨论】:

  • 哇,克里斯……它就像一个魅力。这正是我想要的。 +1
  • 也对我有用.. 非常感谢@Chris Barr Sir
  • 我们可以隐藏用户不需要的值,而不是显示“最小经验应该小于最大值”消息吗?如果是请告诉我
  • 如果用户在最小值中选择 50 lacs,则最大选项值自动隐藏在 50 lacs 值以下,然后用户无法看到低于 50 lacs 的值
【解决方案2】:

编写一个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()
  });

【讨论】:

    猜你喜欢
    • 2019-02-09
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 2013-11-15
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多