ARBO#35417 Betere lengtecontrole TEXTAREA's
svn path=/Website/trunk/; revision=28135
This commit is contained in:
@@ -397,6 +397,39 @@ api2 = {
|
||||
return model.aliasprefix + (field.dbs == model.primary ? field.dbs : fld);
|
||||
},
|
||||
|
||||
// Vult bij alle varchar en memo velden de len property in als dat nog niet is gedaan
|
||||
setfieldlengths: function _setfieldlengths(model)
|
||||
{
|
||||
var dblengths = null;
|
||||
for (var fld in model.fields)
|
||||
{
|
||||
if (fld.substring(0,1) == "_")
|
||||
continue;
|
||||
var field = model.fields[fld];
|
||||
if (!field.dbs || field.hidden || field.len || field.readonly)
|
||||
continue;
|
||||
if (field.typ != "varchar" && field.typ != "memo")
|
||||
continue;
|
||||
if (!dblengths)
|
||||
{
|
||||
dblengths = {};
|
||||
var sql = "SELECT column_name, data_length"
|
||||
+ " FROM user_tab_columns"
|
||||
+ " WHERE table_name = " + safe.quoted_sql_upper(model.table)
|
||||
+ " AND data_type = 'VARCHAR2'";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
while (!oRs.Eof)
|
||||
{
|
||||
dblengths[oRs("column_name").Value] = oRs("data_length").Value;
|
||||
oRs.MoveNext();
|
||||
}
|
||||
oRs.Close()
|
||||
__Log(dblengths);
|
||||
}
|
||||
field.len = dblengths[field.dbs.toUpperCase()];
|
||||
}
|
||||
},
|
||||
|
||||
// Bepaal bij een GET welke velden op te halen
|
||||
sqlfields: function _sqlfields(params, model)
|
||||
{
|
||||
|
||||
@@ -223,6 +223,19 @@ jQuery.extend({
|
||||
FcltMgr.resized(window);
|
||||
}
|
||||
|
||||
/* Experimentele max-lengte indicatie onder label
|
||||
var len = this.value.length;
|
||||
var maxlen = parseInt(this.getAttribute("maxlength"), 10)||4000;
|
||||
var $lbl = $("label[for="+ this.name +"]");
|
||||
$lbl.find("div").remove();
|
||||
if ($lbl.length && len > maxlen * (90/100))
|
||||
{
|
||||
if (len > maxlen)
|
||||
$lbl.append("<div style='color:red;font-size:0.9em;'>Te lang.<br>Maximum is {0}, huidig is {1}</div>".format(maxlen, len));
|
||||
else
|
||||
$lbl.append("<div style='color:blue;font-size:0.9em'>{1}/{0} karakters</div>".format(maxlen, len));
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
$(this).change(delayedUpdate).keyup(delayedUpdate).keydown(delayedUpdate).blur(update);
|
||||
|
||||
@@ -206,11 +206,7 @@ function validateForm(fName, params)
|
||||
{
|
||||
hint = L("lcl_shared_validator_format");
|
||||
}
|
||||
if (validatorHint == '')
|
||||
{
|
||||
validatorHint = validatorHint + '\n';
|
||||
}
|
||||
validatorHint = validatorHint + (spantitle[0].textContent || spantitle[0].innerText) + ' ' + hint + '\n';
|
||||
validatorHint.push((spantitle[0].textContent || spantitle[0].innerText) + ' ' + hint);
|
||||
}
|
||||
vIsGood = false;
|
||||
}
|
||||
@@ -230,7 +226,7 @@ function validateForm(fName, params)
|
||||
var clsName = "missing";
|
||||
var anyMissing = false;
|
||||
var anyBad = false;
|
||||
var validatorHint = "";
|
||||
var validatorHint = [];
|
||||
|
||||
var jqcheckonly="*";
|
||||
if (params.checkOnly) // slechts enkele velden controleren
|
||||
@@ -314,6 +310,24 @@ function validateForm(fName, params)
|
||||
}
|
||||
}
|
||||
)
|
||||
/* Experimenteel. Nieuwe browsers staan bij een maxlength ook in een textarea niet al
|
||||
te veel karakters toe dus is dan dubbelop
|
||||
// Lengte controle
|
||||
$("input:enabled,textarea:enabled").filter(jqcheckonly).not(jqchecknot).each(function (i)
|
||||
{
|
||||
var txt = $(this).val()||"";
|
||||
var maxlen = parseInt($(this).attr("maxlength"), 10)||4000;
|
||||
if (txt.length > maxlen)
|
||||
{
|
||||
var lbl = $("label[for="+ this.name +"]").text()||"";
|
||||
lbl = lbl.replace(/\:$/, ""); // Dubbele punt aan einde weg
|
||||
validatorHint.push(("Veld '{0}' is te lang. Maximum is {1} karakters, huidig is {2}.".format(lbl, maxlen, txt.length)));
|
||||
|
||||
anyBad = true;
|
||||
}
|
||||
}
|
||||
)
|
||||
*/
|
||||
|
||||
$(".suggestBad").each(function (i)
|
||||
{
|
||||
@@ -410,11 +424,11 @@ function validateForm(fName, params)
|
||||
}
|
||||
else if (anyBad)
|
||||
{
|
||||
if (validatorHint == '')
|
||||
if (!validatorHint.length)
|
||||
{
|
||||
validatorHint = L("lcl_shared_validator_format");
|
||||
validatorHint = [L("lcl_shared_validator_format")];
|
||||
}
|
||||
alert(validatorHint);
|
||||
alert(validatorHint.join("\n"));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -454,8 +454,9 @@ function scf_RWFIELDTR(model, fld, val, key, params)
|
||||
if (field.translate && key)
|
||||
params.translate = { fld: fld.dbs, key: key };
|
||||
|
||||
params.maxlength = field.len;
|
||||
if (field.typ == "memo")
|
||||
RWTEXTAREATR(fld, "fld", field.label, val, params)
|
||||
RWTEXTAREATR(fld, "fld", field.label, val, params);
|
||||
else
|
||||
{
|
||||
switch (field.typ)
|
||||
|
||||
@@ -94,6 +94,8 @@ function scaffolding_edit(model, scf_params)
|
||||
}
|
||||
}
|
||||
}
|
||||
api2.setfieldlengths(model); // max lengtes bepalen
|
||||
|
||||
if ("hook_pre_edit" in model)
|
||||
model.hook_pre_edit(xxx_data, model.fields);
|
||||
|
||||
|
||||
@@ -375,7 +375,11 @@ function RWTEXTAREATR(pname, pclass, plabel, pvalue, params)
|
||||
%><tr <%=params.trclass?"class='"+params.trclass+"'":""%>>
|
||||
<%if (plabel) {%><td class="label"><label for="<%=pname%>"><%=plabel? plabel + ":" : ""%></label></td><% } %>
|
||||
<td <%=(params.tdhtml_ta? " " + params.tdhtml_ta : "")%>>
|
||||
<textarea class="<%=pclass%>"<%=(params.html? " " + params.html + " " : "")%><%=' id=\"' + pname + '\"' + ' name=\"' + pname + '\"'%><%=(params.readonly? " readonly " : "")%>><%=safe.textarea(pvalue)%></textarea>
|
||||
<textarea class="<%=pclass%>"
|
||||
<%=(params.html? " " + params.html + " " : "")%>
|
||||
<%=' id=\"' + pname + '\"' + ' name=\"' + pname + '\"'%>
|
||||
<%=" maxlength="+(params.maxlength||4000)%>
|
||||
<%=(params.readonly? " readonly " : "")%>><%=safe.textarea(pvalue)%></textarea>
|
||||
</td>
|
||||
</tr><%
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user