Add the following bookmarklet to safari:
javascript:(function()%7Bvar%20ca,cea,cs,df,dfe,i,j,x,y;function%20n(i,what)%7Breturn%20i+%22%20%22+what+((i==1)?%22%22:%22s%22)%7Dca=cea=cs=0;df=document.forms;for(i=0;i%3Cdf.length;++i)%7Bx=df%5Bi%5D;dfe=x.elements;if(x.onsubmit)%7Bx.onsubmit=%22%22;++cs;%7Dif(x.attributes%5B%22autocomplete%22%5D)%7Bx.attributes%5B%22autocomplete%22%5D.value=%22on%22;++ca;%7Dfor(j=0;j%3Cdfe.length;++j)%7By=dfe%5Bj%5D;if(y.attributes%5B%22autocomplete%22%5D)%7By.attributes%5B%22autocomplete%22%5D.value=%22on%22;++cea;%7D%7D%7Dalert(%22Removed%20autocomplete=off%20from%20%22+n(ca,%22form%22)+%22%20and%20from%20%22+n(cea,%22form%20element%22)+%22,%20and%20removed%20onsubmit%20from%20%22+n(cs,%22form%22)+%22.%20After%20you%20type%20your%20password%20and%20submit%20the%20form,%20the%20browser%20will%20offer%20to%20remember%20your%20password.%22)%7D)();
You will need to know how to manipulate an existing bookmark to paste this small program in the place a bookmark normally has the URL. This is exactly how programs like Instapaper and Pocket and others use a bookmarklet (which is really a program stored as a bookmark) to change or act on the page you are currently browsing.
Since you should always be a little suspicious when someone posts a program for you to run - here is a clearer version that shows we just loop over all the elements and blindly turn on autocomplete for each.
This makes up for web developers that forgot or intentionally did not enable autocomplete.
Same script as above, but nicely formatted and without the bookmarklet wrapper:
function () {
var ca, cea, cs, df, dfe, i, j, x, y;
function n(i, what) {
return i " "
what((i == 1) ? "" : "s")
}
ca = cea = cs = 0;
df = document.forms;
for (i = 0; i < df.length; i) {
x = df[i];
dfe = x.elements;
if (x.onsubmit) {
x.onsubmit = "";
cs;
}
if (x.attributes["autocomplete"]) {
x.attributes["autocomplete"].value = "on";
ca;
}
for (j = 0; j < dfe.length; j) {
y = dfe[j];
if (y.attributes["autocomplete"]) {
y.attributes["autocomplete"].value = "on";
cea;
}
}
}
alert("Removed autocomplete=off from "
n(ca, "form")" and from "
n(cea, "form element")", and removed onsubmit from "
n(cs, "form")". After you type your password and submit the form, the browser will offer to remember your password.")
}
Safari uses the form's fields name to detect if they can be autocompleted. Unfortunately, some sites use names that are not recognized by the browser, which in that case does not fill them.
This is not a safari issue, but more a website issue, and I think there is no workaround on the iPhone.
But there may be a workaround : I use 1password on both my mac and iPhone, and it is more "tolerant" than Safari for detecting fields.
The advantage is that, when I sync my iPhone app with the one on the mac, I can then use the iPhone app to autologin within Safari mobile. But it is a workaround, as I must save the form's content on the mac before being able to use it on the phone, and the detection is still not perfect.
Best Answer
Since iOS is a sandbox I do not know of any tools to help reset the keychain and download it again with out resetting all settings. Do you have the iCloud Keychain running, is it backed up via iCloud? If so then trying to reinstall your iCloud data back may fix the issue. Start by going to Setting> General>Reset reset all settings. If this does not work try erase all content and settings and restore from and iCloud backup. If you are still acing issues the try a full erase of the iOS and your data. Then restore from an iCloud backup.