2016-01-19 64 views
0

我想驗證myForm,因此用戶可以輸入1到99之間的最大值。當我提交一個數字時,我得到一個空白頁面,這是一個select.php 。但我想留在我的索引頁上,並收到「你在下面」的消息。任何人都可以看到這裏有什麼問題?jquery min和max顯示新頁面

的index.html:

<div class="content"> 
     <p id="number"></p> 
     <div class="form"> 


       <form id="myForm" action="select.php" method="post"> 
        <input type="number" name="numbervalue" id="numberinput"> 
        <input type="submit" id="sub" Value="Submit"> 
        <span id="result"></span> 
        <span id="testnumber"></span> 
       </form> 

     </div> 
    </div> 

JS:

var minNumberValue = 1; 
var maxNumberValue = 99; 

$('#sub').click(function(e){ 
    e.preventDefault(); 
    var numberValue = $('input[name=numbervalue]').val(); 
    if(isNaN(numberValue) || numberValue == ''){ 
    $('#testnumber').text('Please enter a number.') 
    return false; 
    } 
    else if(numberValue < minNumberValue){ 
    $('#testnumber').text('You are below.') 
    return false; 
    } 
    else if(numberValue > maxNumberValue){ 
    $('#testnumber').text('You are above.') 
    return false; 
    } 
    return true; 
}); 


// Insert function for number 
function clearInput() { 
    $("#myForm :input").each(function() { 
     $(this).val(''); 
    }); 
} 

    $(document).ready(function(){ 
     $("#sub").click(function(e) { 
     e.preventDefault(); // remove default action(submitting the form) 
     $.post($("#myForm").attr("action"), 
     $("#myForm :input").serializeArray(), 
     function(info){    
     $("#result").html(info); 
     }); 
     clearInput(); 
    }); 
    }); 



// Recieve data from database 
$(document).ready(function() { 
     setInterval(function() { 
     $('.latestnumbers').load('response.php') 
     }, 3000); 
    }); 
+0

您是否使用jqueryvalidation.org的驗證插件? –

+0

操作編號: - /好點。我必須使用該插件,還是可以找到不依賴於該插件的代碼? – M375

+0

您可以編寫一個在提交表單時調用的驗證函數,如果驗證失敗(編號不在預期的範圍內),您應該返回false(並因此停止提交) [link](https:/ /api.jquery.com/submit/) – flynorc

回答

1

這裏有一個小功能來驗證號碼:

var minNumberValue = 1; 
var maxNumberValue = 99; 

$('#sub').click(function(e){ 
    e.preventDefault(); 
    var numberValue = $('input[name=numbervalue]').val(); 
    if(isNaN(numberValue) || numberValue == ''){ 
    $('#result').text('Please enter a number.') 
    return false; 
    } 
    else if(numberValue < minNumberValue){ 
    $('#result').text('You are below.') 
    return false; 
    } 
    else if(numberValue > maxNumberValue){ 
    $('#result').text('You are above.') 
    return false; 
    } 
    return true; 
}); 

您可以通過更改定義的最小值和最大值這兩個變量(如果您要提交給服務器,請務必檢查這些服務器端,因爲用戶可能會操縱這些變量通過開發工具代碼來改變這些邊界或提交他們想要的任何東西)。

結果信息顯示在您的span#result中,否則您也可以使用alert()

這裏最重要的事情是在點擊功能(它的JavaScript事件)的e參數,調用e.preventDefault()(如果你不這樣做,表單將在完成驗證之前提交,作爲一個input[type=submit]默認操作是提交表格[去圖...]),只要條件不滿足,返回false,如果滿足驗證,則返回truereturn true;允許表單遵循其操作參數。

而與此小提琴:https://jsfiddle.net/3tkms7vn/(編輯:忘了提,我註釋掉return true;並用電話代替它的消息添加到span#result只是爲了防止的jsfiddle提交。)

+0

非常感謝。我現在正在工作,所以我會在我回家時測試代碼,然後給出答案的要點:) – M375

+0

我剛剛閱讀您的答案。我的號碼保存在MySQL數據庫中。這意味着我必須做一些serversite來?你有鏈接,我可以閱讀更多關於這個的鏈接,或者你知道我必須添加到代碼中。 – M375

+0

是的,你需要一個服務器端語言來接受post參數(在php $ _POST ['numbervalue']將包含你的號碼),你可以驗證它在服務器上大於1小於99;如果不是,則向用戶返回錯誤,並使用JavaScript顯示消息。如果成功,請使用JavaScript通知用戶。你會想知道如何響應AJAX請求 - 無論是純文本,XML還是JSON。我更喜歡JSON - https://www.html5andbeyond.com/jquery-ajax-json-php/。 –

2

如何利用在輸入標籤的「分鐘」和「最大」屬性,它會處理所有的驗證本身:

<input type="number" name="numbervalue" min="1" max="99"> 

乾杯,

+0

並非我們所有人都在企業環境之外,可以忽略IE 7 8和9;即使沒有MS支持包... http://www.w3schools.com/tags/att_input_min.asp –