2015-11-20 47 views
1

我有一個輸入。我需要驗證,如果該值以「T」開頭後面跟數字 接受的值的數字或「TP」開頭:T12345或TP12345驗證輸入,如果以「T」或「TP」開頭

我的JavaScript代碼

var ip_value = document.getElementById('PROMASTER_NO_FW').value; 
var v_first_char = ip_value.substr(0, 1); 
var v_second_char = ip_value.substr(1, 1); 

if (v_first_char.toUpperCase() !== 'T') { 
    alert('It must be start with T'); 
    return false; 
} else { 
    if (v_second_char.toUpperCase !== 'P' && isNaN(Number(v_second_char))) { 
    alert('error2'); 
    return false; 
    } else { 
    return true; 
    } 
} 
+2

Regex'/^TP?[0-9] {5} $ /' – Tushar

+0

@Tushar看起來數字不限於5個字符長度。 「12345」就是例子。我可能是錯的 - 這很不清楚。 –

+0

'然後在需要時添加js驗證 – dandavis

回答

1

function myFunction() { 
 
    var ip_value = document.getElementById('test').value; //'AB12345'; 
 
    var v_first_char = ip_value.substr(0, 1); 
 
    var v_second_char = ip_value.substr(1, 1); 
 
    if (v_first_char.toUpperCase() !== 'T') { 
 
     document.getElementById("error").innerHTML = 'It must be start with T'; 
 
    } else if (v_second_char.toUpperCase() !== 'P' && isNaN(Number(v_second_char))) { 
 
     document.getElementById("error").innerHTML = 'error2'; 
 
    } else { 
 
     document.getElementById("error").innerHTML = 'no error'; 
 
    } 
 
}
It will work on blur <br /> 
 
<input type="text" id="test" onblur="myFunction()"> 
 
<span id="error">No Error</span>

我覺得你的邏輯是完美的,應該可以正常工作,您只需要改變:

​​

to

v_second_char.toUpperCase() 

在過去,如果條件

最終代碼會

var ip_value = document.getElementById('PROMASTER_NO_FW').value; 
var v_first_char = ip_value.substr(0, 1); 
var v_second_char = ip_value.substr(1, 1); 

if (v_first_char.toUpperCase() !== 'T') { 
    alert('It must be start with T'); 
    return false; 
} else { 
    if (v_second_char.toUpperCase() !== 'P' && isNaN(Number(v_second_char))) { //change in this line 
    alert('error2'); 
    return false; 
    } else { 
    return true; 
    } 
} 

或爲代碼短線可以使用正則表達式,如上面的答案。

0

您可以使用正則表達式來實現你的場景。

var reg = new RegExp(/^TP?[0-9]+$/) 

if((string).match(reg)) 
    return true 
else 
    return false 

if語句中的條件,也可用於檢索所提供的原始字符串匹配字符串。

+1

'if(condition){return true; } else {return false; }'可以將_always_簡化爲'return(condition);' –

+0

但是這裏'condition'返回匹配的字符串,不是'true'或'false'。 –

+0

...如果沒有匹配,它會返回一個_falsey_ null,而不是false - 我忘記了這一點。好的...'返回(string.match(reg)!= null);' –

0

對正則表達式進行模式匹配是最好的使用方法。假設當且僅當ip_value是一個「T」或「TP」,隨後由至少一個號碼,你正在返回true:

var ip_value = document.getElementById('PROMASTER_NO_FW').value; 
var pattern = new RegExp(/^TP?\d+$/); 
return pattern.test(ip_value); 

/^TP?\d+$/是短期的正則表達式模式或正則表達式 - 如果你不熟悉使用正則表達式,Javascript中的一個好的起點是MDN Regular Expressions Guide