在<li> <input /> </li>中附加只能使用一次

时间:2017-03-13 03:35:43

标签: php jquery html ajax

我想在页面执行后输入li。我希望li函数接近word office格式。我的意思是,当我们在第一个列表上写入然后输入它时,它将集中在第二个列表等等。这是我之前制作的代码:

$('input#ingred').on('keydown',function(e){
    if(e.which == 13) {
        $('ol').append('<li><input class="formxyz globalwrite" id="ingred" name="ingred" placeholder="ingredients"></input></li>');
        $('input#ingred').focus();
    }
});

这是ajax中的脚本

Declare Function SCardListReaders Lib "winscard.dll" Alias "SCardListReadersA" ( _
    ByVal phContext As Integer, _
    ByVal mszGroups As String, _
    ByVal mszReaders As String, _
    ByRef pcchReaders As Integer _
    ) As Integer

Sub GetReaders()

Dim RetVal As Integer
Dim Readers As String
Dim ReadersStrLength As Integer

Debug.Print "GetReaders"
RetVal = SCardListReaders(0, "", Readers, ReadersStrLength)
Debug.Print "Returns = " & RetVal & ", Readers = " & Chr(34) & Readers & Chr(34) & _
            " Length = " & ReadersStrLength

RetVal = SCardListReaders(0, "", Readers, ReadersStrLength)
Debug.Print "Returns = " & RetVal & ", Readers = " & Chr(34) & Readers & Chr(34) & _
            " Length = " & ReadersStrLength

End Sub
Sub GetReaders2()

Dim RetVal As Integer
Dim Readers As String * 50
Dim ReadersStrLength As Integer

Debug.Print "GetReaders2"
RetVal = SCardListReaders(0, "", Readers, ReadersStrLength)
Debug.Print "Returns = " & RetVal & ", Readers = " & Chr(34) & Readers & Chr(34) & _
            " Length = " & ReadersStrLength

RetVal = SCardListReaders(0, "", Readers, ReadersStrLength)
Debug.Print "Returns = " & RetVal & ", Readers = " & Chr(34) & Readers & Chr(34) & _
            " Length = " & ReadersStrLength

End Sub

当我运行此代码并在第1行写入然后按ENTER键时,第二个li显示出来。但是当我在第二个li中写入并按下回车键时,没有附加内容。当我按下ENTER键时,如何使此追加功能连续工作?

3 个答案:

答案 0 :(得分:1)

您不能重复使用ID值 - 它不是有效的HTML,并且输入元素的选择器将无法正常工作。使用类也是如此,即使它有多次使用类是有效的,选择将选择所有匹配的元素。您需要生成唯一ID,或使用其他选择器来选择最后一个输入元素,例如jquery .last()选择器。

答案 1 :(得分:0)

如果有两个同名的ID选择器,jQuery只选择第一个。

答案 2 :(得分:0)

您应该使用委托方法绑定keydown事件,如下所示:

改变这个:

$('input#ingred').on('keydown',function(e) {

进入这个:

$(document.body).on('keydown','input#ingred',function(e) {

因为第一种语法不会绑定到稍后(动态)创建的元素。

<强>更新

要获得更正确的方法,您应该将其绑定到classname属性而不是id,因为id id最初用于命名元素并且应该是唯一的。

我认为这是你需要的正确方式:D

$(document.body).on('keydown','input.formxyz',function(e) {

或:

$(document.body).on('keydown','input[name="ingred"]',function(e) {

祝你好运!