我想用jquery dialog.problem中的用户提供的用户名替换当前选择器类中的“username”,这是我无法在jquery对话框按钮内的用户$(this).attr()因为它将请参阅jquery对话框。请在jquery对话框中建议如何用用户输入替换word用户名。提前谢谢
<form action="#" method="post" >
</form>
<p id="text" class="www.username.google.com"> click me </p>
<div id="test" class="sandy" >
<input id="username" class="sandy1" />
</div>
=============================================== ===============================
$('#text').click(function(){
var provider_url= $(this).attr('class');
$('.sandy').dialog({
buttons: {
"OK": function() {
if($('#username').val() == '') {
$('#username').focus();
} else {
var myvalue= $("#username").val();
var nextval= replace(provider_url, username,myvalue);
$(this).dialog('close');
alert(nextval);
$('form').append(nextval);
$('form').submit();
}
}
}
});
});
jsfiddle代码演示在这里http://jsfiddle.net/zCFD5/127/.Please帮助我
答案 0 :(得分:1)
首先,您当前的问题不是由于“this”引用问题,而是错误的js / jQuery代码。
而不是:
var nextval= replace(provider_url, username,myvalue);
写:
var nextval= provider_url.replace('username', myvalue);
它会更好。
编辑:正如Rory所说,不要使用class属性来存储值。这不是一个好方法。如果您已经知道最终的网址,也许您可以将其硬编码到按钮回调中。如果您的字符串可以更改,可以在函数参数中传递它,这将创建您的对话框。
答案 1 :(得分:1)
试试这个:
$('#text').click(function() {
var provider_url = $(this).attr('class');
$('.sandy').dialog({
buttons: {
"OK": function() {
if ($('#username').val() == '') {
$('#username').focus();
} else {
var myvalue = $("#username").val();
var nextval = provider_url.replace(/\.username\./, "." + myvalue + ".");
$(this).dialog('close');
alert(nextval);
$('form').append(nextval);
$('form').submit();
}
}
}
});
});
值得注意的是,您应该真正使用data
属性,而不是将其存储在class
中。你需要升级你的jQuery版本才能做到这一点。
此外,我在正则表达式中包含了前导.
,因此在这种情况下,您肯定会替换网址的正确部分:http://www.username.superusername.com