Javascript Jquery插件-卡在某个点上,事件问题
我正在尝试编写一个简单的jquery插件,它将有一个textarea或textbox和一些按钮 单击按钮后,我需要获取相关文本区域或文本框的值 我已经写了一些代码,但在某一点上我被卡住了。 有人能帮我吗 这是小提琴:Javascript Jquery插件-卡在某个点上,事件问题,javascript,jquery,html,jquery-plugins,Javascript,Jquery,Html,Jquery Plugins,我正在尝试编写一个简单的jquery插件,它将有一个textarea或textbox和一些按钮 单击按钮后,我需要获取相关文本区域或文本框的值 我已经写了一些代码,但在某一点上我被卡住了。 有人能帮我吗 这是小提琴: (函数($){ $.fn.widgetify=函数(选项){ var默认值={ 多重:假 }; var设置=$.extend({},默认值,选项); 返回此。每个(函数(){ //在这里创建所有dom元素 this.template=$(“示例类”); this.textbox=$
(函数($){
$.fn.widgetify=函数(选项){
var默认值={
多重:假
};
var设置=$.extend({},默认值,选项);
返回此。每个(函数(){
//在这里创建所有dom元素
this.template=$(“示例类”);
this.textbox=$(“”);
this.textarea=$(“”);
this.go=$(“”);
//在此处附加所有dom元素
if(settings.multi){
$(this.template).append(this.textarea);
}否则{
$(this.template).append(this.textbox);
}
$(this.template).append(this.go);
$(this.append)(this.template);
//所有的活动都在这里
this.go.on('click',$.proxy(函数)(){
//使用原始的“this”
警报($(this.textarea.val());
}这),;
归还这个;
});
}
}(jQuery));
您需要修复html,而不是重复div id。将第二个div更改为:
<div id="example-widget-container1"></div>
代码的其余部分看起来不错。至少就这个例子而言
此外,在单击处理程序中,您必须根据您的设置提醒textarea和textbox值。多变量。我发现了两个原因 A) 正如前面提到的我的uchamp关于ID的内容。你应该在HTML和JS中更改它 B) 在
Go上。单击您仅调用的
函数
alert($(this.textarea).val());
所以,现在文本区域工作正常,Textbox将无法工作。您可能需要添加
alert($(this.textbox).val());
要让它发挥作用。有两个问题,
首先,必须在所有输入中添加id
this.textbox = $("<input type='text' name='sample" + settings.id + "' id='sample" + settings.id + "' />");
this.textarea = $("<textarea name='sampletextarea" + settings.id + "' id='sampletextarea" + settings.id + "'></textarea>");
首先,您使用
“#示例小部件容器”
绑定了两次插件,这就是为什么您没有得到正确的输出
第二,您已经有了domtextarea和domtextbox,所以不需要这样做
alert($(this.textarea).val());
反而
this.go.on('click', $.proxy(function () {
//use original 'this'
if (settings.multi) {
alert(this.textarea.val());
} else {
alert(this.textbox.val());
}
}, this));
会有用的
请参见演示您停留在哪一点?插件的当前状态是什么?目标是什么?每当我在textarea中输入任何值并试图获取该值时,它都不会在警报中显示该值。@uchamp comment发现了这一点,并据此修改了代码。
alert($(this.textarea).val());
this.go.on('click', $.proxy(function () {
//use original 'this'
if (settings.multi) {
alert(this.textarea.val());
} else {
alert(this.textbox.val());
}
}, this));