0
function validate(form) {    
    while ($('#img').attr('src')=="../static/img/placeholder.png") {
        return false;
    }
    return true;
}

^このコードは私には機能しません。プレースホルダーimgがまだ存在している間は送信されないフォームが欲しいのですが。コードでどのような間違いを犯していますか?

HTML:

<form method="post" action="/{{ curr_user }}" enctype="multipart/form-data" onSubmit="return validate(this);" >

    <div class="submit-image">
        <img id="img" src="../static/img/placeholder.png" onerror="this.src = '../static/img/placeholder.png'" alt="submitted image" />
    </div>
    <span class="input-url text">
        <input type="text" id="url" placeholder="http://" maxlength="320"/>
    </span>
    <div class="form-actions">
        <input type="submit" id="submit" name="op" value="Submit" class="form-submit"/
    </div>

</form>
4

2 に答える 2

2

現在の例から、これで十分です。

function validate() {    
    return $('#img').attr('src') != '../static/img/placeholder.png';
}

$('#submit').on('click', function() {
  return validate();
});

ここでより詳細な例を参照してください:http://jsfiddle.net/ENnLC/

于 2012-12-22T00:39:51.633 に答える
1

たぶん、正規表現を使用して、srcにplaceholder.pngが含まれていることを確認します

if( ( /placeholder\.png$/.test( $('#img').attr('src') ) ) {
        return false;
}

もう1つのポイント。ここにあなたのコード

<img id="img" src="../static/img/placeholder.png" onerror="this.src = '../static/img/placeholder.png'" alt="submitted image" />

onerrorイベントで同じ画像を読み込んでいます。これにより、同じ画像を読み込んでonerrorイベントを再度トリガーし、無限ループに入る可能性があります。

于 2012-12-22T00:39:24.413 に答える