2013-08-02 34 views
0

我有一個輸入文本區域,我希望用戶輸入他的全名。所以在現場至少有兩個詞是必須的。與表單中的「動作」代碼衝突驗證

但驗證碼與表單的動作代碼(action =「nome.php」)衝突。

我該如何解決?

下面是代碼:

<script type="text/javascript"> 
// <![CDATA[ 
function validateMe(form_elm) 
{ 
var full = form_elm.user.value; 
// clear any spaces in front 
while (full.charAt(0) == " ") full = full.substr(1); 
// split and check for two names - dual purpose of also retrieving first and last name for future use 
full = full.split(" "); 
var first_name = full[0]; 
var last_name = full[1]; 
if (full.length < 2) alert("Please enter your full name."); 
return false; 
} 
// ]]> 
</script> 

<form method="post" name="input" action="nome.php" onsubmit="return validateMe(this)"> 
Fazer reserva em nome de: 
<input name="user" type="text"/> 
<input type="submit" name="Submit" value="NEXT" /> 
</form> 
+0

你不應該必須'返回validateMe了'return'(這)' –

+0

沒有'返回validateMe了'return'(本)'的消息顯示,但行動執行!我希望僅在消息未顯示時執行該操作。 –

+0

@FelipeGrinsztajn我建議你取消你的Javascript驗證並使用服務器端PHP。如果用戶禁用了JS,那麼你最終會失敗,除非你有一個''選項。我刪除了我的問題,因爲我覺得這不值得付出努力,因爲這就是JS驗證。這不值得。按照我的建議,你會感謝我的。乾杯 –

回答

0

嘗試修整從全名字段的值的端部的空白,然後分裂,並檢查所述陣列的長度。

http://jsfiddle.net/bBZry/

function validate(el) { 
    var text = el.user.value.trim(); 
    console.log(text); 
    var words = text.split(" "); 
    if (words.length > 1) { 
    return true; 
    } else { 
    return false; 
    } 
} 

if (!String.prototype.trim){ 
    String.prototype.trim = function(){ 
     return this.replace(/^\s+|\s+$/g,''); 
    } 
} 
+0

謝謝,它的工作! –