0

現在のセレクターのクラスの「username」をjqueryダイアログでユーザーが指定したユーザー名に置き換えたい。問題は、jqueryダイアログボタンcoz内のユーザー$(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

まず第一に、あなたの現在の問題は「この」参照の問題によるものではなく、間違ったjs/jQueryコードによるものです。

それ以外の :

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

書く :

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

そしてそれはより良く働くでしょう。

編集:ロリーが言ったように、値を格納するためにクラス属性を使用しないでください。それを行うのは良い方法ではありません。最終的なURLがすでにわかっている場合は、ボタンのコールバックにハードコードすることができます。文字列が変更される可能性がある場合は、ダイアログを作成する関数パラメータで文字列を渡すことができます。

于 2012-05-04T08:41:10.697 に答える
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のバージョンをアップグレードする必要があります。

.また、次のような場合にURLの正しい部分を確実に置き換えることができるように、正規表現に先頭と末尾を含めました。http://www.username.superusername.com

于 2012-05-04T08:42:21.967 に答える