2016-09-28 79 views
-1

我想將其發送到服務器端之前檢查數據之前驗證, 在我的代碼,我要運行的JS驗證和取消請求,如果fromid> =風溼如何請求

我的代碼

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 />

在此先感謝

PS
我調試我的代碼,它似乎JS功能之前觸發該Get請求

編輯:
問題解決了,
從我的HTML的輸入標籤中刪除了「的onclick」事件,並把它放在我的jQuery代碼爲大家推薦的。
謝謝大家

+0

也許[asp.net MVC客戶端驗證不工作(http://stackoverflow.com/q/21985782/205233)對你有一些提示。 – Filburt

+0

由於您正在綁定單擊事件,並且您正在其中編寫驗證邏輯。然後,您可以將'location.href ...'代碼放入該函數中,並確保僅在數據驗證 – Bharadwaj

回答

0

試試這個

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

仍然無法運行後纔會執行, – barak

1

不要使用onclick屬性,在同一個函數重定向你的應用程序。

更加清晰maintanable。

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
<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()" /> 

這個人是不是在你的按鈕,因爲工作的點擊你 重定向上DeleteRangeUsersControlPanel控制 控制器的作用,這是主要問題

刪除按鈕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();  
}); 
1

通過看你的代碼,你需要記住這一點,

第一件事情,你必須在html元素標籤click事件,另一個click事件是您通過JQuery結合。事實是,JQuery附加您click事件的其中一個已經存在,所以這將是 click事件是在出現後html。因此,稍後會觸發您的事件。
我的建議是把你已經寫在htmlonclick到JQ click事件,你要綁定的邏輯。
所以,你的代碼會,

的JavaScript

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 
    } 
}); 

HTML

<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 /> 

OR

還有另外一種方法,不綁定事件在裏面 JQuery。相反,創建一個驗證函數將返回boolean,並在您登錄onclick之前調用它。

的JavaScript

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

HTML

<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="return validate();location.href='@Url.Action("DeleteRangeUsers", "ControlPanel")?fromid=' + $('#txtuserrangefrom').val() + '&toid=' + $('#txtuserrangeto').val()" /> 
<br />