Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery插件-卡在某个点上,事件问题_Javascript_Jquery_Html_Jquery Plugins - Fatal编程技术网

Javascript Jquery插件-卡在某个点上,事件问题

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=$

我正在尝试编写一个简单的jquery插件,它将有一个textarea或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));