2014-03-02 22 views
0

我想將JavaScript添加到我的插件php文件中,以便僅當用戶檢查條款和條件複選框時才啓用「簽出」按鈕。在PHP文件中實現JavaScript(WordPress)

我在另一個用戶的問題中發現了這個解決方案,但是我在執行它到我的php文件時遇到了麻煩。

How do i disable a submit button when checkbox is uncheck?

我已經創建的複選框,並在這個函數修改按鈕的代碼一樣,你可以看到如下:

function OutputContent_OnlineCheckoutButton() 
    { 
     echo '<input type="checkbox" id="checky"> I have read and agree to the <a href="#">terms and conditions</a>.<br/><input class="button-primary" id="postme" type="submit" disabled="disabled" name="'.$this->GetButtonID('checkout').'" value="'.__('Checkout', $this->myDomain).'"/>'."\n"; 

echo '<script language='JavaScript'> 
$('#checky').click(function(){ 
    $('#postme').attr("disabled",!this.checked); 
}); 
</script> 

'."\n"; 

    } 

但JavaScript的似乎並不奏效,我應該如何實現JavaScript使它工作?

在此先感謝。

PS

這是我對按鈕的原始代碼。

function OutputContent_OnlineCheckoutButton() 
    { 
     echo '<input class="button-primary" type="submit" name="'.$this->GetButtonID('checkout').'" value="'.__('Checkout', $this->myDomain).'"/>'."\n"; 
    } 

回答

1

很難不可能在此基礎上,以測試你的,但至少可以避免這種錯誤:

echo '<script language='JavaScript'> 

將無法​​正常工作,因爲你內''。您應該逃避他們像這樣:

echo '<script language=\'JavaScript\'> 

或者使用"

echo '<script language="JavaScript"> 
+2

該屬性也應該是'type =「text/javascript」',對於HTML5我相信它可以完全省略。 – halfer

+0

可能是真的,雖然這會工作,所以這不是OP的問題本身 – Nanne

2

在一個PHP文件,一切,是不是和?>之間<?php乾脆被直接複製到輸出。因此,您不應該創建一個能夠逐字迴應內容的函數,而應該簡單地將內容包含在<?php ... ?>標籤之外的部分,以便它可以直接寫入輸出。這就是說,這仍然是一個糟糕的方式來組織你的代碼。代替在所有地方輸出<腳本>代碼,最好將您的JavaScript移動到外部文件,然後在頁面的底部(對於絕大多數JavaScript)和可能的位置放置一個<腳本>標記一個<腳本>標記在頭部分(對於必須運行較早的JavaScript)。

我應該補充說明,您已經爲「語言」指定了一個無效值的示例代碼。對於JavaScript,您應該完全省略該語言,因爲它在被省略時被理解爲JavaScript。 (另外,你可能把「語言」和「類型」混淆了,JavaScript的類型是「text/javascript」,但是正如我以前寫的那樣 - 你應該完全省略這個屬性,因爲它是多餘的,缺乏理解)。

+0

嗨感謝您的答案。我已經採納了你的建議並將腳本放在一個單獨的文件中,然後我將javascipt文件鏈接到插件的另一個文件中,其中定義了所有其他腳本。 JavaScript文件在頁面加載時被調用,因爲我可以在源代碼中看到它(稱爲tcbutton.js),但仍然不起作用。你可以看看,我的網站是:http://pprinces.x10.mx/site/events/ – al3