0

我想用用户在 jquery 对话框中提供的用户名替换当前选择器类中的“用户名”。问题是我不能在 jquery 对话框按钮内使用 $(this).attr() 因为它将指jquery 对话框。请建议如何在 jquery 对话框中用用户输入替换单词用户名。提前致谢

<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/ 。请帮帮我​</p>

4

2 回答 2

1

Try this:

$('#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();
                }
            }
        }
    });
});

Example fiddle

It's worth noting though that you should really use data attributes for this, rather than storing it in the class. You'll need to upgrade your version of jQuery to do this though.

Also, I included the leading and trailing . in the regex so that you're definitely replacing the right part of the url in cases like this: http://www.username.superusername.com

于 2012-05-04T08:42:21.967 回答
1

首先,您当前的问题不是由于“this”参考问题,而是错误的 js/jQuery 代码。

代替 :

var nextval= replace(provider_url, username,myvalue);

写 :

var nextval= provider_url.replace('username', myvalue);

它会更好地工作。

编辑:正如罗里所说,不要使用类属性来存储值。这不是一个好方法。如果您已经知道最终 url,也许您可​​以将其硬编码到您的按钮回调中。如果您的字符串可以更改,则可以将其传递给将创建对话框的函数参数。

于 2012-05-04T08:41:10.697 回答