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

^此代碼對我無效。我想要一個不會在佔位符img仍然存在的情況下提交的表單。我用我的代碼犯了什麼錯誤?使用javascript訪問img src

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> 
+3

請出示你的HTML。 –

+4

你確認了$('#img')。attr('src')的內容嗎?此外,爲什麼這是在一個while循環? – RonaldBarzell

+0

使用if而不是while。 – kennypu

回答

2

從當前的例子,這已經足夠了:

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

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

在這裏看到一個更詳細的例子:http://jsfiddle.net/ENnLC/

+0

這不起作用 - 當我使用警報功能來檢查它時 - 我收到一條消息,說它是未定義的 – JoseBazBaz

+0

alert($('#img')。attr('src')); – JoseBazBaz

+0

我有我的JavaScript在一個單獨的文件 - 這就是爲什麼它不工作我雖然導入文件。 – JoseBazBaz

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事件相同的圖像。

+0

我不認爲它會造成無限循環。當用戶輸入錯誤的網址時,佔位符就會保留。基本上,我希望表單不要提交 - 直到用適當的圖像代替佔位符。 – JoseBazBaz

+0

另外,我是JS的新手 - 來自Python bckgrd。爲什麼不推薦用於JS? – JoseBazBaz

+0

'while'通常用於在循環條件語句時使用。然而,你的代碼只需要你執行你的語句'return false;'並且爲此'if'語句就足夠了。 – Bruno