2011-06-22 33 views
2

我正在與莫斯2007.我創建了一個下拉列,其中有3個選項。如果選擇選項1和選項2,則應禁用下拉菜單和人員選取器,如果選擇選項3,則應啓用下拉菜單和人員選取列。我提供了頁面源代碼,有人可以幫我解決這個問題,因爲我是jquery的新手。需要jQuery代碼來禁用下拉和人員選擇當在下拉選項中的共享點

<TR> 
      <TD nowrap="true" valign="top" width="190px" class="ms-formlabel"><H3 class="ms-standardheader"> 
      <nobr>Type of Notification</nobr> 
     </H3></TD> 
      <TD valign="top" class="ms-formbody" width="400px"> 
      <!-- FieldName="Type of Notification" 
       FieldInternalName="Type_x0020_of_x0020_Notification" 
       FieldType="SPFieldChoice" 
       --> 
       <span dir="none"><select name="ctl00$m$g_785c653c_cfa1_4aa5_8060_a84901274cc3$ctl00$ctl04$ctl07$ctl00$ctl00$ctl04$ctl00$DropDownChoice" id="ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl07_ctl00_ctl00_ctl04_ctl00_DropDownChoice" title="Type of Notification" class="ms-RadioText"> 
     <option selected="selected" value="Select One">Select One</option> 

     <option value="Option1">Option1</option> 
     <option value="Option2">Option2</option> 
        <option value="Option3">Option3</option> 

    </select><br></span></TD></TR> 
<TR> 
     <TD nowrap="true" valign="top" width="190px" class="ms-formlabel"><H3 class="ms-standardheader"> 
     <nobr>Functional Team</nobr> 
    </H3></TD> 
     <TD valign="top" class="ms-formbody" width="400px"> 
     <!-- FieldName="Functional Team" 
      FieldInternalName="Mytest" 
      FieldType="SPFieldCascadingDropDownListFieldWithFilter" 
      --> 
      <span dir="none"> 
     <select name="ctl00$m$g_785c653c_cfa1_4aa5_8060_a84901274cc3$ctl00$ctl04$ctl16$ctl00$ctl00$ctl04$ctl00$ctl00$Functional Team" onchange="javascript:setTimeout('WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$m$g_785c653c_cfa1_4aa5_8060_a84901274cc3$ctl00$ctl04$ctl16$ctl00$ctl00$ctl04$ctl00$ctl00$Functional Team&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, true))', 0)" id="ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl16_ctl00_ctl00_ctl04_ctl00_ctl00_Functional Team" title="Functional Team Parent" class="ms-input"> 
    <option selected="selected" value="">Please select an Item</option> 
    <option value="Test">Test</option> 
    <option value="Other">Other</option> 
</select></span></TD></TR> 
<TR> 
     <TD nowrap="true" valign="top" width="190px" class="ms-formlabel"><H3 class="ms-standardheader"> 
     <nobr>Therapeutic Area</nobr> 
    </H3></TD> 
     <TD valign="top" class="ms-formbody" width="400px"> 
     <!-- FieldName="Therapeutic Area" 
      FieldInternalName="Therapeutic_x0020_Area" 
      FieldType="SPFieldChoice" 
      --> 
      <span dir="none"><select name="ctl00$m$g_785c653c_cfa1_4aa5_8060_a84901274cc3$ctl00$ctl04$ctl17$ctl00$ctl00$ctl04$ctl00$DropDownChoice" id="ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl17_ctl00_ctl00_ctl04_ctl00_DropDownChoice" title="Therapeutic Area" class="ms-RadioText"> 
    <option selected="selected" value="Select One">Select One</option> 
    <option value="Anti-Infective">Anti-Infective</option> 
    <option value="Other">Other</option> 
</select><br></span></TD> </TR> 

<TR> 
     <TD nowrap="true" valign="top" width="190px" class="ms-formlabel"><H3 class="ms-standardheader"> 
     <nobr>Admin Name</nobr> 
    </H3></TD> 
     <TD valign="top" class="ms-formbody" width="400px"> 
     <!-- FieldName="Admin Name" 
      FieldInternalName="Admin_x0020_Name" 
      FieldType="SPFieldUser" 
      --> 
      <span dir="none"> 
     <input name="ctl00$m$g_785c653c_cfa1_4aa5_8060_a84901274cc3$ctl00$ctl04$ctl20$ctl00$ctl00$ctl04$ctl00$ctl00$HiddenUserFieldValue" type="hidden" id="ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_HiddenUserFieldValue" /> 
     <span id="ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField" class="ms-usereditor" NoMatchesText="&lt;No Matching Names>" MoreItemsText="More Names..." RemoveText="Remove" value="" allowEmpty="1" ShowEntityDisplayTextInTextBox="0" EEAfterCallbackClientScript=""><input name="ctl00$m$g_785c653c_cfa1_4aa5_8060_a84901274cc3$ctl00$ctl04$ctl20$ctl00$ctl00$ctl04$ctl00$ctl00$UserField$hiddenSpanData" type="hidden" id="ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_hiddenSpanData" /><input name="ctl00$m$g_785c653c_cfa1_4aa5_8060_a84901274cc3$ctl00$ctl04$ctl20$ctl00$ctl00$ctl04$ctl00$ctl00$UserField$OriginalEntities" type="hidden" id="ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_OriginalEntities" value="&lt;Entities />" /><input name="ctl00$m$g_785c653c_cfa1_4aa5_8060_a84901274cc3$ctl00$ctl04$ctl20$ctl00$ctl00$ctl04$ctl00$ctl00$UserField$HiddenEntityKey" type="hidden" id="ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_HiddenEntityKey" /><input name="ctl00$m$g_785c653c_cfa1_4aa5_8060_a84901274cc3$ctl00$ctl04$ctl20$ctl00$ctl00$ctl04$ctl00$ctl00$UserField$HiddenEntityDisplayText" type="hidden" id="ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_HiddenEntityDisplayText" /><table id="ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_OuterTable" class="ms-usereditor" cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse;"> 
    <tr valign="bottom"> 
     <td valign="top" style="width:90%;"><table cellpadding="0" cellspacing="0" border="0" style="width:100%;table-layout:fixed;"> 
      <tr> 
       <td><div id="ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_upLevelDiv" TabIndex="0" onFocusIn="this._fFocus=1;saveOldEntities('ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_upLevelDiv')" onClick="onClickRw(true, true);" onChange="updateControlValue('ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField')" onFocusOut="this._fFocus=0;" onPaste="dopaste();" AutoPostBack="0" class="ms-inputuserfield" onDragStart="canEvt(event);" onKeyup="return onKeyUpRw('ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField');" onCopy="docopy();" onBlur="updateControlValue('ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField')" Title="People Picker" onKeyDown="return onKeyDownRw(this, 'ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField', 3, true, event);" contentEditable="true" style="width: 100%; word-wrap: break-work;overflow-x: hidden; background-color: window; color: windowtext;" name="upLevelDiv"></div><textarea name="ctl00$m$g_785c653c_cfa1_4aa5_8060_a84901274cc3$ctl00$ctl04$ctl20$ctl00$ctl00$ctl04$ctl00$ctl00$UserField$downlevelTextBox" rows="1" cols="20" id="ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_downlevelTextBox" class="ms-input" onKeyDown="return onKeyDownRw(this, 'ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField', 3, true, event);" onKeyUp="onKeyUpRw('ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField');" Title="People Picker" AutoPostBack="0" style="width:100%;display: none;position: absolute; "></textarea></td> 
      </tr> 
     </table></td><td align="right" valign="top" nowrap="true" style="padding-left:5px;"><a id="ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_checkNames" title="Check Names" onclick="var arg=getUplevel('ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField');var ctx='ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField';EntityEditorSetWaitCursor(ctx);WebForm_DoCallback('ctl00$m$g_785c653c_cfa1_4aa5_8060_a84901274cc3$ctl00$ctl04$ctl20$ctl00$ctl00$ctl04$ctl00$ctl00$UserField',arg,EntityEditorHandleCheckNameResult,ctx,EntityEditorHandleCheckNameError,true);return false;" href="javascript:"><img title="Check Names" src="/_layouts/images/checknames.gif" alt="Check Names" style="border-width:0px;" /></a>&nbsp;<a id="ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_browse" accesskey="B" title="Browse" onclick="__Dialog__ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField(); return false;" href="javascript:"><img title="Browse" src="/_layouts/images/addressbook.gif" alt="Browse" style="border-width:0px;" /></a></td> 
    </tr><tr> 
     <td colspan="3"><span id="ctl00_m_g_785c653c_cfa1_4aa5_8060_a84901274cc3_ctl00_ctl04_ctl20_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_errorLabel" class="ms-error"></span></td> 
    </tr> 
</table></span> 
    </span> 


     </TD> 
    </TR> 
+0

您可以發佈[JS小提琴演示(http://jsfiddle.net/)再現你的代碼/情況? –

回答

2

不知道如何禁用你的人員選取器(沒有看到/理解你的HTML)。但這會照顧下降。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" ></script> 
<script type="text/javascript"> 
    $(function(){ 
     $('select[title="Type of Notification"]').change(function(){ 
      if($(this).val() == "Option1" || $(this).val() == "Option2") 
      { 
       $('select').not(this).attr('disabled', 'disabled'); 
      }else if($(this).val() == "Option3"){ 
       $('select').not(this).removeAttr('disabled'); 
      } 
     }); 
    }); 
</script> 
+2

PeopleEditor是一個Sharepoint .NET控件。這是html的巨大混亂,它有4個輸入,一個textarea,contentEditable div,一些圖像按鈕......都包裹在一對桌子和幾個跨度中......這不是很有趣。 –

+0

@kingjiv - 看起來不像它,因爲這段代碼是NASTY!我無法想象爲什麼在這個世界上你需要超過115個字符的輸入名字!更不用說所有CAPS html節點了... –

1

PeopleEditor是相當複雜和煩人的。有多個組件需要處理才能禁用它。在IE中有一個contentEditablediv這是你可以輸入的主要輸入。你也有圖像按鈕有onclick來處理。然後在非IE瀏覽器中,我相信它使用textarea

你需要做這樣的事情(未經測試,你可能需要調整的話):

$("span[id$='_UserField']").find(":input").val("").attr("disabled",true); 

以上將清除並禁用該控件使用所有輸入字段(包括textarea)。

然後你需要處理內容可編輯div。我不確定你是否能disable,或者如果您需要更改contentEditable屬性,像這樣:

$("div[id$='_UserField_upLevelDiv']").text("").attr("contentEditable",false); 

最後,圖像。使用onclick將圖像封裝在a標籤中。我的建議是這樣隱藏它們:

$("span[id$='_UserField']").find("img").hide(); 

希望有所幫助。如果你能擺脫它,隱藏整個事情就容易多了。

+1

+1,人員選擇器是一場噩夢。我有一個[相關文章](http://stackoverflow.com/questions/4157386/retrieve-email-address-from-sharepoint-people-picker-using-javascript/4158850#4158850)這可能有所幫助。 –

0

另一種選擇是使用SPUtility.js(完全公開,我維護這個開源庫)。它取決於Prototype.js,所以你可能沒有興趣,因爲你使用的是jQuery。

它支持隱藏和/或禁用許多不同的字段類型..包括人採摘:

// make a people field read only 
SPUtility.GetSPField('Assigned To').MakeReadOnly(); 
// hide the people field 
SPUtility.GetSPField('Assigned To').Hide();