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;
}

只是另一点。你的代码在这里

<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 回答