1. 程式人生 > >根據html元素的型別設定元素的值

根據html元素的型別設定元素的值

/**
 * 獲取input/select/checkbox/radio的值
 * @param id
 * @param nodeAttribute
 * @param Str valueStr或valueNum 不填預設valueStr
 */
function getFromHtml(id,nodeAttribute,Str)
{
    if ($("#" + id).is('select'))
    {
        getSelect(id, nodeAttribute, Str);
    }
    else
    {
        var type = $("#" + id).attr("type");
        if ('text' == type)
        {
            getInput(id, nodeAttribute, Str);
        }
        else if ('checkbox' == type)
        {
            getCheckBox(id, nodeAttribute, Str);
        }
        else
        {
            $("input[type=radio][name=" + name + "]").each(function(i, e){
                type = $(this).attr("type");
                    });
            if ('radio' == type)
            {
                getRadio(id, nodeAttribute, Str);
            }else{
                console.error('getToHtml未支援的元素型別 $("#' + id + '").attr("type")=' + type);
            }
        }
    }
}
/**
 * 從表單中獲取值並設定到jobmeta的節點屬性中
 * @param id
 * @param values
 * @param Str valu
 */
function getSelect(id,nodeAttribute,Str)
{
	eval('nodeAttribute.'+id+'=nodeAttribute.'+id+'?nodeAttribute.'+id+':[{"valueStr":"","valueNum":0,"nr":0}]');
	var v = $("#"+id).val();
	Str=(!Str)?"valueStr":Str;
	if(v){
		eval('nodeAttribute.'+id+'[0].'+Str+'=v');
	}
}

/**
 * 從表單中獲取值並設定到jobmeta的節點屬性中
 * 
 * @param id
 * @param values
 * @param Str
 *            valueStr|valueNum
 */
function getInput(id,nodeAttribute,Str)
{
    eval('nodeAttribute.'+id+'=nodeAttribute.'+id+'?nodeAttribute.'+id+':[{"valueStr":"","valueNum":0,"nr":0}]');
    var v = $("#"+id).val();
    Str=(!Str)?"valueStr":Str;
    if(v!='undefined'&&v!=undefined){
        eval('nodeAttribute.'+id+'[0].'+Str+'=v');
    }
}
/**
 * 獲取選中的radio值
 * @param name
 */
function getCheckedVal(name){
    return $("input[name='"+name+"']:checked").val()
}
/**radio取值
 * @param name 
 * @param nodeAttribute
 * @param Str
 */
function getRadio(name,nodeAttribute,Str)
{
    eval('nodeAttribute.'+id+'=nodeAttribute.'+id+'?nodeAttribute.'+id+':[{"valueStr":"","valueNum":0,"nr":0}]');
    var v = $("input[name='"+name+"']:checked").val();;
    Str=(!Str)?"valueStr":Str;
    if(v){
        eval('nodeAttribute.'+id+'[0].'+Str+'=v');
    }
}
/**
 * 從外掛表單中獲取值然後設定到jobmeta的節點屬性中
 * @param id 表單id同時也是屬性變數名,兩者要一致。
 * @param nodeAttribute 節點屬性物件
 */
function getCheckBox(id,nodeAttribute)
{
    eval('nodeAttribute.'+id+'=nodeAttribute.'+id+'?nodeAttribute.'+id+':[{"valueStr":"","valueNum":0,"nr":0}]');
    var v = $("#"+id).prop("checked")?'Y':'N';
    eval('nodeAttribute.'+id+'[0].valueStr=v');
    console.log(id,eval('nodeAttribute.'+id+'[0].valueStr'));
}

獲取元素的type屬性結合eval函式進行不同的處理。