【问题标题】:Add text boxes to HTML and use with JQuery将文本框添加到 HTML 并与 JQuery 一起使用
【发布时间】:2013-06-08 17:14:27
【问题描述】:

这可能是一个重复的问题,但我对 JQuery 很陌生,我找到的答案没有帮助。是否可以使用 JQuery 添加包含输入字段的 HTML,然后使用 JQuery 使用该输入字段?这是我的具体问题:

我有以下 HTML 代码:

<div id="practiceGroup">

    <div id="practice1">

        <div class="textBoxContainer">
            <input class="formatTextWithin" name="practiceName1" id="practiceName1" value="Practice Name"/>
            <div id="tetBoxAdd1" class="textBoxAdd True" onClick="addPractice(1)"><div id="textBoxAddPlus1" class="textBoxAddPlus"></div></div>
        <div style="clear:both;"></div>             
        </div>

        <div class="textBoxContainer">
            <input class="formatTextWithinSmall" name="groupSize1" id="groupSize1"/>
            <p class="MUGroupText"><em>How many group of providers are in this practice?</em></p>
         <div style="clear:both;"></div>  
         </div>

    </div>

</div>

如果用户点击 div id="TextBoxAdd1" ,我想添加另一个 div id="practice2" 到 div id="practiceGroup" 等等。唯一的问题是当我添加 HTML 时,我无法在 JQuery 中使用 #practice2 作为选择器。要将 HTML 添加到 div id="practiceGroup" 我使用 JQuery .append()。我尝试过使用 document.createElement,但这似乎也不起作用。

因此,每当使用 id="practiceX" 创建一个新的 div 时,其中 X 是数字,我的 JQuery 将无法正常工作。我需要从每个输入字段中获取值。另外(次要)我对设置了值的输入字段具有模糊和焦点功能。当用户单击输入字段时,该值应该会消失。这适用于第一个输入字段,但是当添加新字段时,该功能不起作用。

这是我的 JQuery:

var addnew = 2;

$(document).ready(function()
{
$(".formatTextWithin").focus(function inputFocus() 
{
    (this.value == 'Practice Name') && (this.value = '');   
});

$(".formatTextWithin").blur(function inputBlur() 
{
    (this.value == '') && (this.value = 'Practice Name');   
});

});

function addPractice(currentpractice){

if ($("#textBoxAddPlus"+currentpractice).hasClass('textBoxAddPlus'))
{
    $("#practiceGroup").append(

    '<div id="practice'+addnew+'">'+
        '<div class="textBoxContainer">'+
            '<input class="formatTextWithin" name="practiceName'+addnew+'" id="practiceName'+addnew+'" value="Practice Name"/>'+
            '<div class="textBoxAdd"><div id="textBoxAddPlus'+addnew+'" class="textBoxAddPlus" onClick="addPractice('+addnew+')"></div></div>'+
       '<div style="clear:both;"></div> '+
       ' </div>'+

       ' <div class="textBoxContainer">'+
           ' <input class="formatTextWithinSmall" name="groupSize'+addnew+'" id="groupSize'+addnew+'"/>'+
            '<p class="MUGroupText"><em>How many group of providers are in this practice?</em></p>'+
       '<div style="clear:both;"></div> '+
       ' </div>'+
    '</div>');

    $("#textBoxAddPlus"+currentpractice).removeClass('textBoxAddPlus');
    $("#textBoxAddPlus"+currentpractice).addClass('textBoxAddMinus');

    addnew ++;

}
else
{
    $("#practice"+currentpractice).remove();
}

};

总的来说,我试图在该实践中捕捉不同的实践名称和医生群体。如果有不同的方法来实现这一点,我愿意接受新的想法。我只是在这个问题上卡了很长时间。

提前致谢。

【问题讨论】:

    标签: javascript jquery html input append


    【解决方案1】:

    是的,设置事件委托

    $('#practiceGroup').on('focus', '.formatTextWithin', function() 
    {
        if(this.value == 'Practice Name' && this.value = '') { ... }   
    });
    
    $('#practiceGroup').on('blur', '.formatTextWithin', function() 
    {
        if(this.value == '' && this.value = 'Practice Name') { ... }
    });
    

    【讨论】:

    • 那你为什么改变你选择的答案?
    【解决方案2】:

    您需要使用一些委托:

    $(document).ready(function () {
        $('#practiceGroup').on('focus', ".formatTextWithin", function () {
            //...
        });
    
        $("#practiceGroup").on('blur', ".formatTextWithin", function () {
            //...
        });
    
    });
    

    【讨论】:

    • 谢谢谢谢谢谢...我已经被这个问题难住了一段时间。
    猜你喜欢
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2011-10-05
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多