jQuery .change()不在textarea上工作

时间:2013-04-15 22:00:08

标签: jquery forms text input textarea

这是我第一次询问StackOverflow,但我目前难以接受我正在创建的一些公司代码。它根本不接受.change()或绑定到keyup。我之前没有遇到任何问题,但它今天不再适用于我。查看我的代码,看看是否有任何可能导致问题的内容。

对格式化感到抱歉,我是新手。

var currentContent = "null";
var customeri = "";
var optionsi = "";
var equipmenti = "";
var picturei = "";
$(document).ready(function() {
    $("#preview").hide();
    $("#previewPane").hide();
    $("#previewHeading").hide();
$(".uiFonts").click(function() {
    var clickedID = $(this).attr("id");
    if(clickedID !== null) {
        $("#main").hide();
        loadContent(clickedID);
    }
});

$("#Equipment").bind('change keyup', function() {
        equipmenti = $(this).val();
                    $("#preview").html('<br /><span class="reg">Customer Info<br /></span>'+customeri+'<br /><br /><span class="reg">Options<br /></span>'+optionsi+'<br /><br /><span class="reg">Equipment<br /></span>'+equipmenti+'<br /><br /><span class="reg">Picture:<br /></span><img src="'+picturei+'" />');
});
});
function loadContent(cID) {
$("#main").load(cID + ".html", function() {
    $("#main").slideDown(1500);
    $("#preview").fadeIn(1500);
    $("#previewPane").fadeIn(1500);
    $("#previewHeading").fadeIn(1500);
    currentContent = cID;
});
}
包含textareas的

.html文件如下:

<p><span class="reg">Customer Info - Name, Address, Phone, Email</span><br />
<textarea name="Customer Info" class="textAreas inputs" id="Customer"></textarea>
<br />
<br />
<span class="reg">Trailer Options</span>
<br />
<textarea name="Options" class="inputs textAreas" id="Options"></textarea>
<br />
<br />
<span class="reg">Trailer Equipment</span>
<br />
<textarea name="Equipment" class="inputs textAreas" id="Equipment"></textarea>
<br>
<br>
<span class="reg">Picture URL</span></p>
<input type="text" id="picture" class="inputs"></input>

我试图将它们绑定在一般情况下:

$(".inputs").change(function() {
    customeri = $("#Customer").val();
    optionsi = $("#Options").val();
    //etc

2 个答案:

答案 0 :(得分:1)

工作FIDDLE。为了确认,我添加了<div id='test'/>$("#Equipment").bind('change keyup', function(e) { $('#test').append(e.type);并获取了密钥并按预期更改。

更新我认为您的问题出在其他地方,因为这些事件都在触发。 (您确实知道只有在textarea使用不同的值后才会触发更改吗?)

答案 1 :(得分:0)

加载外部.html文件时,jquery无法定期访问它并对其应用操作。出现这个问题是因为在触发器$(document).ready中,它找不到.html中找到的id的链接,直到它被加载为止,如果你在文档之后调用外部.html它就找到它为时已晚准备就绪。

解决方法是在单独的jquery函数中包含.change,或者在文档加载完成之前加载.html。