修改jquery对话框中的元素类

时间:2012-05-04 08:22:08

标签: jquery jquery-ui

我想用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帮助我

2 个答案:

答案 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();
                }
            }
        }
    });
});

Example fiddle

值得注意的是,您应该真正使用data属性,而不是将其存储在class中。你需要升级你的jQuery版本才能做到这一点。

此外,我在正则表达式中包含了前导.,因此在这种情况下,您肯定会替换网址的正确部分:http://www.username.superusername.com

相关问题