2010-11-22 64 views
0

我有三個表單域:名稱,名字和姓氏。名稱字段是隱藏的,我試圖在keypress上將該值設置爲名字+姓氏。我也試圖格式化它,以便字符全部小寫,空格變成破折號。JQuery的問題 - 追加值到隱藏的輸入字段?

所以:

<input type="text" name="firstname" value="John John" /> 
<input type="text" name="lastname" value="Doe" /> 
<input type="hidden" name="name" value="john-john-doe" /> 

我一直在嘗試使用下面的代碼,但它不工作...

  $('input[name=field_firstname[0][value]]').keyup(function() { 
        var firstname = $('input[name=field_firstname[0][value]]').val(); 
        var lastname = $('input[name=field_lastname[0][value]]').val(); 
        $('input[name=name]').val(firstname.replace(/\s/g, "-").toLowerCase()+lastname.replace(/\s/g, "-").toLowerCase()); 
      }); 

      $('input[name=field_lastname[0][value]]').keyup(function() { 
        var firstname = $('input[name=field_firstname[0][value]]').val(); 
        var lastname = $('input[name=field_lastname[0][value]]').val(); 
        $('input[name=name]').val(firstname.replace(/\s/g, "-").toLowerCase()+lastname.replace(/\s/g, "-").toLowerCase()); 
      }); 
+0

也許這只是一個品味的問題,但你可以使用`id`,而不是`name`。例如,jQuery語法會更清晰:例如,將會是$('input#firstname')`而不是`$('input [name =「firstname」]')`。 – rsenna 2010-11-22 17:28:48

回答

3

也許我缺少一些方面,但我不認爲你可以使用像這樣的屬性選擇器。爲了獲得名字字段,你會說:input[name='firstname']

你也在做同樣的事情兩次,這是給一些額外的想法一個很好的理由。例如,你可以在一杆一舉兩得keyup S:

$("input[name='firstname'], input[name='lastname']").keyup(...); 

你才能把事情用的ID輕鬆了許多,雖然。例如,利用這個HTML:

<input type="text" name="firstname" id="firstname" value="John John" /> 
<input type="text" name="lastname" id="lastname" value="Doe" /> 
<input type="hidden" name="name" id="sanitized_name" value="john-john-doe" /> 

你會使用下面的代碼片段:

$('#firstname, #lastname').keyup(function() { 
    var fullname = $('#firstname').val() + ' ' + $('#lastname').val(); 
    $('#sanitized_name').val(fullname.replace(/\s/g, '-').toLowerCase()); 
}); 
0

省略[0][value]爲:

$('input[name=field_firstname]') // removed [0][value] 

不完全確定你爲什麼把它放在那裏。

此外,您可能希望使用.blur()而不是.keyup(),爲您節省大量冗餘重複。更好的是,連接.submit()上的字段,因爲無論如何你都會關心它。想想看,「Jhon Doe」意味着在使用.keyup()以及jQuery進程來完成它時使用16次查找和8次連接。

現在這個眼看了幾下,人們把無效/問題的字符裏面的id屬性,如[0][value],因爲它認識到它作爲一個CSS表達式而不是一個ID的一部分,這是無效的jQuery的。 document.getElementById("bla[0]");似乎不過工作,所以,如果你真的有(或懶得修復它),你可以做到以下幾點:

$(document.getElementById("bla[0][value]")) //etc