2012-01-09 38 views
0

我有一個醫療健康計劃的PHP應用程序表單,用戶填寫他的詳細信息並從各種控件中選擇一些選項,其中一個是計劃類型家庭計劃)。有時候,雖然用戶填寫了他的兄弟姐妹/配偶的詳細信息,但他們忘記了也選擇「家庭」選項,並將其下降爲默認值,即「私人」計劃。JS&PHP - 如果其他字段被填寫,則更改下拉值

如何確保如果用戶填寫了他的兄弟姐妹的詳細信息,「計劃」下拉列表將更改爲正確的選項?我知道這可以用js輕鬆完成,但我不確定我應該調用它,onFocusonClick將不起作用,因爲用戶可能只需單擊Sibling Name字段但不輸入值,但可以填寫某些內容後來清除它等

我認爲一個腳本,計算4個可用兄弟領域的長度,如果其中一個不是空的,然後更改'計劃'選擇值從'私人'到'家庭」。

任何想法都會很棒,謝謝。

+0

當用戶選擇家庭計劃時,爲什麼不讓兄弟領域可見? – 2012-01-09 18:04:31

+0

可以這樣做,但恐怕可能導致用戶不清楚家庭計劃也可用。 – bikey77 2012-01-09 18:45:35

+0

您可以更強調通過使用單選按鈕而不是下拉選擇計劃類型。垂直選項卡瓦特/單選按鈕可能工作:[互聯網獨立輸入組在Web窗體](http://www.lukew.com/ff/entry.asp?974) – 2012-01-09 21:11:20

回答

0

你已經得到安寧部分答案自己:你需要來檢查,如果該字段不爲空(或其他一些隨機的狀態)的功能。可以調用該函數checkCondition()

接下來,您需要一個驗證函數來調用它並在適當的情況下更改字段,您也可以組合這兩個函數,但是如果將它們分開,代碼通常看起來更乾淨。例如。 ensureValidFieldPlan()

然後,您可以掛鉤該功能在適當的時間運行。最簡單的方法是以onChange的形式。更好的方法是將其掛接到適當的表單字段,但爲了簡單起見,我們將其掛接到表單。

你總碼會是這個樣子:

 
function checkCondition(){ 
    return form.field1.value.length != 0; 
} 

function ensureValidFieldPlan(){ 
    if(form.plan.value != 'family' && checkCondition()){ 
     form.plan.value = 'family' 
    } 
} 

form.onchange = function(){ form.onChange(); ensureValidFieldPlan(); }; 

注意,這並不能保證瀏覽器客戶端將傳遞一個有效的形式(例如,它可以是僞造的),你應該總是還執行服務器 - 方面驗證。

+0

謝謝,我使用了onchange函數,它工作正常。 – bikey77 2012-01-10 07:25:44

0

取決於你想如何處理它,服務器端?事實上,檢測

strlen($_POST['siblingname']) > 0 

然後在處理其他事情之前自動設置您的計劃familla從php代碼。

如果你想在客戶端做到這一點。我建議使用流行的JQuery庫並攔截sibblingname字段上的值更改事件。然後,在事件處理程序中,檢查同名名稱字段值的長度,如果有,請將計劃設置爲系列。

好運

+0

我想客戶端驗證,以便用戶看到錯誤和理解他擁有的各種選項。最重要的是告訴他一個家庭計劃的高成本,並確保他在提交表格之前接受不同的TOS協議。 – bikey77 2012-01-09 17:50:42

相關問題