如何在请求之前验证

时间:2016-09-28 08:56:19

标签: javascript jquery asp.net-mvc

我想在将数据发送到服务器端之前检查数据, 在我的代码中,我想运行js验证并取消请求,如果fromid> = toid

我的代码



jQuery('#btndeletereg').click(function () {
    if (jQuery('#txtuserrangefrom').val() >= jQuery('#txtuserrangeto').val()) {
        alert("Range is not possible");
    }
});

<label for="txtuserrangefrom">From User ID</label>
<input id="txtuserrangefrom" name="txtuserrangefrom" type="number" />
<span>&nbsp&nbsp&nbsp</span>
<label for="txtuserrangeto">To User ID</label>
<input id="txtuserrangeto" name="txtuserrangeto" type="number" />
<input id="btndeletereg" class="btn" type="button" value="Delete all users in range" onclick="location.href='@Url.Action("DeleteRangeUsers", "ControlPanel")?fromid=' + $('#txtuserrangefrom').val() + '&toid=' + $('#txtuserrangeto').val()" />
<br />
&#13;
&#13;
&#13;

提前致谢

P.S
我调试了我的代码,似乎在JS函数

之前触发了Get请求

编辑:
问题解决了,
删除了&#34; onclick&#34;来自我的html输入标记的事件,并将其放入我的jquery代码中 谢谢大家

4 个答案:

答案 0 :(得分:1)

不要使用onclick属性,将应用程序重定向到同一个函数中。

更清晰,更可爱。

jQuery('#btndeletereg').click(function (e) {
    if (jQuery('#txtuserrangefrom').val() >= jQuery('#txtuserrangeto').val()) {
      alert("Range is not possible");
      return false;
    }
    else
    {
      alert("ok");
      window.location.href="yoururl";
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label for="txtuserrangefrom">From User ID</label>
<input id="txtuserrangefrom" name="txtuserrangefrom" type="number" />
<span>&nbsp&nbsp&nbsp</span>
<label for="txtuserrangeto">To User ID</label>
<input id="txtuserrangeto" name="txtuserrangeto" type="number" />
<input id="btndeletereg" class="btn" type="button" value="Delete all users in range" />
<br />

答案 1 :(得分:1)

<input id="btndeletereg" class="btn" type="button" value="Delete all users in range" onclick="location.href='@Url.Action("DeleteRangeUsers", "ControlPanel")?fromid=' + $('#txtuserrangefrom').val() + '&toid=' + $('#txtuserrangeto').val()" />
  

这个不起作用,因为您点击按钮就可以了   重定向 ControlPanel DeleteRangeUsers 操作   控制器这是主要问题

删除按钮onclick事件并使用jquery代码重定向,如下所示。

jQuery('#btndeletereg').click(function (e) {
    if (jQuery('#txtuserrangefrom').val() >= jQuery('#txtuserrangeto').val()) {
      alert("Range is not possible");
      return false;
    }            
    window.location.href='@Url.Action("DeleteRangeUsers", "ControlPanel")?fromid=' + $('#txtuserrangefrom').val() + '&toid=' + $('#txtuserrangeto').val();    
});

答案 2 :(得分:1)

通过查看代码,您需要记住这一点,

首先,您在html元素标记中有click个事件,而另一个click事件是您通过JQuery绑定的。事实上,JQueryclick事件附加到已经存在的事件中,因此> {/ 1}}中的点击事件后 。因此,您的html JQuery事件将在稍后触发 我的建议是将您在click html中编写的逻辑放入您绑定的jq onclick事件中。
所以你的代码将是,

JavaScript

click

HTML

jQuery('#btndeletereg').click(function () {
    if (jQuery('#txtuserrangefrom').val() >= jQuery('#txtuserrangeto').val()) {
        alert("Range is not possible");
    }else{
        //Your logic which you prefer after validation is success
    }
});

还有另外一种方法,不要在<label for="txtuserrangefrom">From User ID</label> <input id="txtuserrangefrom" name="txtuserrangefrom" type="number" /> <span>&nbsp&nbsp&nbsp</span> <label for="txtuserrangeto">To User ID</label> <input id="txtuserrangeto" name="txtuserrangeto" type="number" /> <input id="btndeletereg" class="btn" type="button" value="Delete all users in range"/> <br /> 中绑定事件。而是创建一个返回JQuery的验证函数,并在登录boolean之前调用它。

JavaScript

onclick

html

function validate() {
    if (jQuery('#txtuserrangefrom').val() >= jQuery('#txtuserrangeto').val()) {
        alert("Range is not possible");
        return false;
    }
    return true;
}

答案 3 :(得分:0)

试试这个

$('#btndeletereg').click(function (e) {
    if ($('#txtuserrangefrom').val() >= $('#txtuserrangeto').val()) {
        e.preventDefault();
        alert("Range is not possible");
        return false;
    }
});