2011-03-18 67 views
2

我一直在寻找解决方案,以便在Sharepoint中的字段中使用查找时获得空白默认值。 Kit Menke对“Dropdown field - first item should blank”的解决方案对于我的第一个领域的查询非常完美。但是如果在同一列表中有多个字段需要为每个查找字段插入空白(仅适用于第一个字段),我无法使其工作。我尝试添加一个新的“Web部件”并将相同的代码应用到第二个字段,但不起作用。有任何想法吗?在此先感谢下拉字段 - 第一项应该是空白 - 对于多个字段(Sharepoint)

+0

你想添加一个链接到博客文章? – Nat 2011-03-18 20:02:45

+0

这里是前面的问题:http://stackoverflow.com/questions/4257527/dropdown-field-first-item-should-be-blank/4260112 ..也许我应该把它变成博客文章纳特。 ;) – 2011-03-18 20:43:31

回答

3

后续我的答案在这里:Dropdown field - first item should be blank

2.0版可以让你在MyCustomExecuteFunction功能的下拉菜单中的名称添加到dropdownNames。与第一个一样,这只适用于所需的单个选择查找字段。此外,为了再次编辑页面并更新您的内容编辑器Web部件,您可能必须为您的下拉列表选择一个值,否则您会遇到可怕的An unexpected error has occurred.。祝你好运! :d

<script type="text/javascript"> 

function GetDropdownByTitle(title) { 
    var dropdowns = document.getElementsByTagName('select'); 
    for (var i = 0; i < dropdowns.length; i++) { 
     if (dropdowns[i].title === title) { 
      return dropdowns[i]; 

     } 
    } 
    return null; 
} 

function GetOKButtons() { 
    var inputs = document.getElementsByTagName('input'); 
    var len = inputs.length; 
    var okButtons = []; 
    for (var i = 0; i < len; i++) { 
     if (inputs[i].type && inputs[i].type.toLowerCase() === 'button' && 
      inputs[i].id && inputs[i].id.indexOf('diidIOSaveItem') >= 0) { 
      okButtons.push(inputs[i]); 
     } 
    } 
    return okButtons; 
} 

function AddValueToDropdown(oDropdown, text, value, optionnumber){ 
    var options = oDropdown.options; 
    var option = document.createElement('OPTION'); 
    option.appendChild(document.createTextNode(text)); 
    option.setAttribute('value',value); 
    if (typeof(optionnumber) == 'number' && options[optionnumber]) { 
     oDropdown.insertBefore(option,options[optionnumber]); 
    } 
    else { 
     oDropdown.appendChild(option); 
    } 
    oDropdown.options.selectedIndex = 0; 
} 

function WrapClickEvent(element, newFunction) { 
    var clickFunc = element.onclick; 
    element.onclick = function(event){ 
     if (newFunction()) { 
      clickFunc(); 
     } 
    }; 
} 

function MyCustomExecuteFunction() { 
    // **** ADD YOUR REQUIRED SINGLE SELECT FIELDS HERE *** 
    var dropdownNames = [ 
     'Large Lookup Field', 
     'My Dropdown Field' 
    ]; 

    var dropdownElements = []; 

    for (var d = 0; d < dropdownNames.length; d++) { 
     // find the dropdown 
     var dropdown = GetDropdownByTitle(dropdownNames[d]); 

     // comment this IF block out if you don't want an error displayed 
     // when the dropdown can't be found 
     if (null === dropdown) { 
      alert('Unable to get dropdown named ' + dropdownNames[d]); 
      continue; 
     } 

     AddValueToDropdown(dropdown, '', '', 0); 

     // collect all of our dropdowns 
     dropdownElements.push(dropdown); 
    } 


    // add a custom validate function to the page 
    var funcValidate = function() { 
     var isValid = true; 
     var message = ""; 
     for (var d = 0; d < dropdownElements.length; d++) { 
      if (0 === dropdownElements[d].selectedIndex) { 
       // require a selection other than the first item (our blank value) 
       if (isValid) { 
        isValid = false; 
       } else { 
        message += "\n"; // already had one error so we need another line 
       } 
       message += "Please choose a value for " + dropdownNames[d] + "."; 
      } 
     } 
     if (!isValid) { 
      alert(message); 
     } 
     return isValid; 
    }; 

    var okButtons = GetOKButtons(); 
    for (var b = 0; b < okButtons.length; b++) { 
     WrapClickEvent(okButtons[b], funcValidate); 
    } 
} 

_spBodyOnLoadFunctionNames.push("MyCustomExecuteFunction"); 
</script> 
+0

它工作完美。非常感谢Kit! – Marcelo 2011-03-21 20:27:49

+0

不客气。您可以通过点击复选标记来接受答案。 :) – 2011-03-21 23:37:24

0

如何前面加上一个空选项sharepoint.Like的选择菜单,

$('#idOfSelectMenu').prepend('<option value="" selected>(None)</option>'); 

我用这个方法,并且只在NewForm.aspx追加此代码,因为在EditForm.aspx它会覆盖所选的选项。

相关问题