2010-04-06 12 views
6

değerinin olup olmadığını kontrol etme Bir form girdisinin herhangi bir değeri olup olmadığını kontrol etmeye çalışıyorum (değerin ne olduğu önemli değil), böylece eğer verilmişse eylem URL'sine değeri ekleyebilirim var olmak. Değeri eklemeden önce paramın ismini eklemem gerekecek ve sadece sayfanın herhangi bir değeri olmadan "P =" gibi boş bir param adını bırakıyorum. ne olursa olsun gönderilen değerin onay yok,Form girdisi

<form name="form" id="form" method="post" action=""> 
    <input type="text" id="p" value=""> 
    <input type="text" id="q" value=""> 
    <input type="submit" value="Update" onClick="getParam();"> 
</form> 

Basit var yapacağını değer == 1 ayar düşünce:

function getParam() { 

// reset url in case there were any previous params inputted 

    document.form.action = 'http://www.domain.com' 

    if (document.getElementById('p').value == 1) { 
     document.form.action += 'P=' + document.getElementById('p').value; 
    } 

    if (document.getElementbyId('q').value == 1) { 
     document.form.action += 'Q=' + document.getElementById('q').value; 
    } 

} 

ve form: Burada

kod bu öyleydi, ama sanırım yanılıyordum.

Ayrıca, ifadeler kullanıyorum, ancak başka bir şeyim olmadığı için bunun kötü bir kod olduğuna inanıyorum. Belki de bir anahtar deyimi kullanarak, bunu nasıl kuracağımı bilmiyorum. Belki:

switch(value) { 
    case document.getElementById('p').value == 1 : 
     document.form.action += 'P=' + document.getElementById('p').value; : 
    case document.getElementById('q').value == 1 : 
     document.form.action += 'Q=' + document.getElementById('q').value; break; 
} 
+0

3. = ' '.length çünkü karşı kontrol daha iyidir. – kennebec

+0

true, ancak bu durumda form sadece url'yi güncellemek içindir ve bu girdilerin kimliğine göre yakaladığı için gerçekten gerekli değildir. – Choy

+0

Yönteminizin "GET" olarak değiştirilebileceğini ve değerlerin sorguya eklenebileceğini biliyor musunuz? Sunucu tarafındaki boş değerleri sorunsuz kullanabilmelisiniz; Ne demek istiyorsun * sayfa berbat *? – RedFilter

cevap

13
var val = document.getElementById('p').value; 
if (/^\s*$/.test(val)){ 
    //value is either empty or contains whitespace characters 
    //do not append the value 
} 
else{ 
    //code for appending the value to url 
} 

P.S. .: Onun için girdi alanları isimleri yoksa Hiçbir şey göndermeyecekseniz value.length

+1

Bu, tam tersi gibi görünüyor. Alanı boş bıraktığımda P = değeri yok (boş olduğu için) ve bir şey yazdığımda herhangi bir şey eklemiyor. – Choy

+0

:) 'false' –

+1

için değerlendirirse eklemeniz gerekecek. Neden bir dalı boş olacağından dolayı sadece neyi ters çevirmiyorsunuz? 'if (!/^ \ s * $ /. test (val)) {// ...' – CMS