6

这是我第一次在 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
4

2 回答 2

2

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

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

于 2013-04-16T20:00:48.620 回答
1

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

更新 我认为您的问题出在其他地方,因为事件都在触发。(你知道改变只有在留下textarea不同的价值后才会触发?)

于 2013-04-16T02:17:38.637 回答