2013-04-16 102 views
0

我正在寫一個非常簡單的函數,但無法讓if語句正常工作。jQuery如果語句功能不正常

$("#supplyRequestTextbox-clients").live("blur", function() { 
    var textboxValue = $(this).val().replace(/\d+/g, '').replace(" ", ""); 
    if (textboxValue == "NO ACCOUNT") { 
     $(".controlBarTextboxNoAccount").fadeIn("fast"); 
    } 
}); 

輸入#supplyRequestTextbox的客戶端的值表示客戶端和組織這樣的:
編號名姓電子郵件電話 一個例子:000001李四[email protected] 123-456-7890

當沒有發現帳戶,該字符串出現正是這樣: 000906沒有考慮

在我的功能我剝的數字,第一個空格,然後檢查,看它是否工作在我的if語句。我已經提醒textboxValue,它傳遞正確,但不管那個textboxValue是,if語句永遠不會觸發。

回答

4

更改,如果條件:

if(textboxValue.indexOf("NO ACCOUNT") !== -1) 

indexOf("NO ACCOUNT")發現"NO ACCOUNT"textboxValue,如果它不能找到它-1返回。所以如果"NO ACCOUNT"在你的字符串中的任何地方,這將是真實的。

+0

是的!謝謝,這工作完美。我不敢相信我之前沒有嘗試過這樣的事情,一直盯着它太久。非常感謝你的幫助! – radleybobins

+0

@radleybobins不用擔心,發生在每個人:) 一個小問題,我只是想的:如果一些討厭的用戶輸入'NO ACCOUNT'作爲他們無論出於何種原因的名字,它可能會導致問題。但是這似乎不太可能...... –

2

使用==進行比較。你正在分配一個真值,所以這個語句總是會被觸發。

+0

是的,我不能相信我錯過了。現在if語句從來沒有激發過任何想法? – radleybobins

+0

您確定值中沒有更多空格嗎?你有沒有試過不更換數字和空格,只是檢查'000906沒有帳戶? –

+0

我喜歡你在哪裏,但有多個ID號碼取決於我正在與哪個學校合作...所以它可能是000907或000908,我想保持最低限度的維護時,我添加額外的學校,所以我不想在每次添加學校時添加一個額外的OR,我寧願只刪除 – radleybobins

1
如果你

if (textboxValue = "NO ACCOUNT") 

你實際上分配到"NO ACCOUNT"textboxValue評估結果作爲布爾

更改if條件

if (textboxValue == "NO ACCOUNT") 

+0

的ID號,以便它現在無法工作,無論textboxValue是什麼,有什麼想法? – radleybobins

+0

@radleybobins:你也擺脫了空間,所以它可能就像'NOACCOUNT'一樣。查看文本框的實際值。 – Blender

+0

@blender當我提醒textboxValue或將其附加到測試框中時,它顯示正確的空格。僅第一個空間被刪除。 – radleybobins

0

嘗試這樣做:

$("#supplyRequestTextbox-clients").live("blur", function() { 
    var textboxValue = $(this).val().replace(/\d+/g, '').replace(" ", ""); 

    // check what textboxValue evaluates to: 
    alert(textboxValue); 

if (textboxValue == "NO ACCOUNT") { 
    $(".controlBarTextboxNoAccount").fadeIn("fast"); 
} 
}); 
0
  1. 使用==的比較作爲Kolink建議。

  2. 您正在用"",IE替代" "。刪除所有空格,以便您的if語句永遠不會返回true。