2010-11-22 80 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